Clipper On Line • Ver Tópico - Como receber dados pela COM1 e colocar numa variavel

Como receber dados pela COM1 e colocar numa variavel

Projeto Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

 

Como receber dados pela COM1 e colocar numa variavel

Mensagempor Paulo Eduardo Wanke » 19 Abr 2022 18:02

Fui amigo do Pablo Cesar e foi ele que me apresentou este forum.
Eu e o Plabo desenvolvíamos programas no Clipper. Há 4 anos o Paplo me incentivou a começar a usar o HMG (Harbour).
Infelizmente ele nos deixou prematuramente e não pode me ajudar mais.
Gostaria da ajuda deste forum para resolver um problema o qual já quebrei muito minha cabeça e não consegui.

Meu problema é o seguinte:
Desenvolvi um programa para um restaurante por quilo.
Preciso que o programa receba os dados das balanças (pesagem dos pratos) através da COM1 (saída serial).
A balança está me enviando um texto e eu não consigo ler.
Não acho o comando que receba esses dados (texto). Pode ser numa variável ou text-box ou label.

Alguém pode me dar uma luz?
Paulo Eduardo Wanke
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 3
Data de registro: 19 Abr 2022 17:37
Cidade/Estado: Curitiba
Curtiu: 1 vez
Mens.Curtidas: 0 vez

Como receber dados pela COM1 e colocar numa variavel

Mensagempor Itamar M. Lins Jr. » 19 Abr 2022 18:44

Olá!
Bem, vindo ao forum! Usando a lib hbwin.
Pois tem outras libs no Harbour que fazem a mesma coisa.

*****************
Function PegaPeso
*****************
*
*
Local oDlg, cTitle := 'Lendo o peso da balança...'
LOCAL cString := Chr( 5 )
LOCAL nResult, nPeso

Do While .t.

   oWinPort := win_Com():Init( "com1:", WIN_CBR_2400, WIN_NOPARITY, 8, WIN_ONESTOPBIT )

   IF ! oWinPort:Open()
      MsgStop("Erro lendo peso: " + oWinPort:ErrorText() )
      return 0
   Else
      IF !oWinPort:SetDTR( .T. )
          MsgInfo ( "SetDTR( .T. ) Falha:"+ oWinPort:ErrorText() )
      ENDIF

      IF ( nResult := oWinPort:Write( cString ) ) <> Len( cString ) //Mando o chr(5)
          msginfo( "Falha na escrita: "+ str(nResult) + " expected " + str(Len(cString)) )
      ENDIF
   EndIf

      oWinPort:Read( @xString,7)
      nPeso := val(substr(xString,2,5))/1000

      IF !oWinPort:Purge( .T., .T. )
         msginfo( "Falha no comando Purge()  :" + oWinPort:ErrorText())
      ENDIF
      oWinPort:Close()

   If empty(nPeso)
      MsgStop('Coloque um peso na balança !')
   Else
      exit
   EndIf

EndDo
Return nPeso

Troque MsgStop por alert()

Saudações,
Itamar M. Lins Jr.
Avatar de usuário

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6927
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 309 vezes
Mens.Curtidas: 503 vezes

Como receber dados pela COM1 e colocar numa variavel

Mensagempor Paulo Eduardo Wanke » 20 Abr 2022 17:24

Muito obrigado!
Vou tentar agora mesmo!
Paulo Eduardo Wanke
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 3
Data de registro: 19 Abr 2022 17:37
Cidade/Estado: Curitiba
Curtiu: 1 vez
Mens.Curtidas: 0 vez

Como receber dados pela COM1 e colocar numa variavel

Mensagempor Paulo Eduardo Wanke » 21 Abr 2022 11:54

WIN_CBR_2400, WIN_NOPARITY, WIN_ONESTOPBIT

O que são as variáveis acima?

IF ! oWinPort:Open()

a minha oWinPort não está Open, portanto não está pegando o texto que a balança está me mandando.

Deve ser as variáveis que eu as criei como sendo string para poder rodar a função PegaPeso()

Meu Agradecimento por estarem me ajudando

Abraços Paulo E. Wanke
Paulo Eduardo Wanke
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 3
Data de registro: 19 Abr 2022 17:37
Cidade/Estado: Curitiba
Curtiu: 1 vez
Mens.Curtidas: 0 vez

Como receber dados pela COM1 e colocar numa variavel

Mensagempor frazato » 21 Abr 2022 20:01

frazato
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 219
Data de registro: 08 Jul 2004 07:45
Curtiu: 0 vez
Mens.Curtidas: 4 vezes

Como receber dados pela COM1 e colocar numa variavel

Mensagempor Itamar M. Lins Jr. » 21 Abr 2022 21:37

Olá!
O que são as variáveis acima?

Estão no #include "hbwin.ch"

Saudações,
Itamar M. Lins Jr.
Avatar de usuário

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6927
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 309 vezes
Mens.Curtidas: 503 vezes

Como receber dados pela COM1 e colocar numa variavel

Mensagempor Itamar M. Lins Jr. » 22 Abr 2022 09:10

Olá!
portanto não está pegando o texto que a balança está me mandando.

Até onde sei, primeiro mandamos um sinal p/ a balança pedindo o peso, ela manda e processamos.
A Toledo tem uma forma de string e a Filizola outra e uma dessas fechou/vendeu... Tem um tempo que não mexo com isso.
Esse programa eu fiz no windows em outra cpu, estou usando o Linux agora para dizer o tamanho das string de cada marca.

Saudações,
Itamar M. Lins Jr.
Avatar de usuário

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6927
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 309 vezes
Mens.Curtidas: 503 vezes




Retornar para Harbour

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 5 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro