Página 1 de 1

Porta Serial

Enviado: 27 Abr 2018 10:17
por Nascimento
algum amigo aqui ja enviou pela serial valores diretamente em hexadecimal?

estou precisando enviar os seguintas valores

0x53|0x80
0x55|0x80

alguem ja enviou coisa desse tipo??

Porta Serial

Enviado: 27 Abr 2018 11:18
por Kapiaba
Desculpe, não entendi, explique melhor. Usei muito, mas para pegar o Código de Barras dos produtos em mercadinhos. Usei a HBCOMM.LIB.

https://pctoledo.org/forum/viewto ... f=4&t=8412

https://pctoledo.org/forum/viewto ... f=4&t=7778

Porta Serial

Enviado: 28 Abr 2018 01:09
por Nascimento
programo em clipper/harbour a vários anos , mais também sou técnico em eletrônica, nesses dias recebi um equipamento
que precisa de um soft para comunicar com ele, e o protocolo que o cara me mandou foi esse:
acionar motor = 0x53
desligar motor = 0x53|0x80
acionar solenoide = 0x54
desligar solenoide = 0x54|0x80
entre outros comandos mais todos seguindo essa regra
com o |0x80 desliga
eu sei que o |0x80 seta o bit 7
como sabemos um hexadecimal é um valor em binário nesses em questão são de 8 bits ou 1 byte
se fosse de 1 microcontrolador para outro eu enviaria tranquilamente , mais não sei ainda como fazer no harbour
tenho um pouco mais de intimidade com a hbct, mais se conseguise um exemplo com a hbcom funcional pra mim seria otimo!

Porta Serial

Enviado: 30 Abr 2018 12:47
por alaminojunior
Boa tarde !

Não entendo quase nada desse negócio de hexadecimal, mas com as funções de conversão do xHarbour não seria possível ?
A função abaixo é da HbComm.

Código: Selecionar todos

Function pegapeso
Local bHandle, string:=chr(5), bytes, buffer, q, tenta:= 0
Private dados
bal_marca = "TOLEDO"
bal_porta = "COM1"
bal_veloc = "9600"

string = HexToSTr( <valor hexadecimal> ) // precisaria converter o seu valor hexa com HexToSTr( <valor hexadecimal> )

do while .t.
	bhandle:= Init_Port(bal_porta,val(bal_veloc),8,0,1,8000)
	OutBufClr(bhandle) // Limpa o Buffer de Saida
	OUTCHR(bhandle,string)
	millisec(250)
	bytes:= InbufSize(bhandle)
	dados:= SPACE(20)
	buffer:= InChr( bhandle, Bytes, @DADOS)
	UnInt_Port(bhandle)
	dados = subs(alltrim(dados),2,5)
	if dados = "IIIII"
	   millisec(250)
	   tenta ++ 
	   if tenta > 8
		   return -1   
	   endif
	   loop
	elseif dados = "SSSSS"
	   return -2
	elseif dados = "NNNNN"
	   return -3   
	endif
	q = val(dados)/1000
	if q = 0
      return -4
	endif
	exit
enddo	
return q
Perdão pelo tratamento dos retornos que eu não editei, mas eu lido com balanças rsrsrsrs.
Mas creio que o caminho seja por aí.

Porta Serial

Enviado: 03 Mai 2018 13:20
por Nascimento
tudo tranquilo, o problema é que tem que entender um pouco de eletronica mais precisamente na parte de microcontroladores
estou com o codigo do rx " o codigo escrito para o microcontrolador alvo" o que esta me encucando é como enviar marcando o bit 7 rsrs

exatamente isso 0x53|0x80 "dessa forma marco o bit 7"
de microcontrolador para microcontrolador consigo normalmente agora ja com o harbour estou levando couro

Porta Serial

Enviado: 03 Mai 2018 16:06
por Claudio Soto
No entendí muy bien lo que necesitas pero esto 0x53|0x80 en Hb es equivalente a
hb_bitOR (0x53,0x80)