Iran Postado Novembro 19, 2010 Denunciar Share Postado Novembro 19, 2010 Senhores,Preciso transmitir pela serial um número decimal que varia de 0 a 100+ carriage return + line feed.se o mumero é 50(dec) = 32(hex) a string seria:mumero = '\x32\x0a\x0d' ou numero = '\x32\r\n' transmitada com: self.ser.write(numero)Se faço assim acontece o que quero, estou usando python + pyserialAi pego o 50(dec) e façohex(50) para converter para hexa ele tranforma na string:'0x32'Imaginei que teria de substituir o O por \ e adicionar CR+LF, fiz então:numero = '\\' + (hex(50))[1:] + '\r\n''\\' para inserir uma barra (a primeira é o scape)(hex(50))[1:] para converter o 50(dec) em 0x32(hex) e retirar o zero ficando x32'\r\n' para adicionar o carriage return + line feedAi mostro a string numero (digitando numero) aparece:'\\x32\r\n' (com uma barra a mais no início)Se mando imprimir com: print numero Aparece: \x32 é feito o CR e o LF Imaginei que era assim funcionaria mas quando envio comself.ser.write(numero)Não funciona.Se alguém consegiu entender essa descrição do problema e souber uma soluçao poderia por favou me mostra com faz ?Sei que python é pouco usada mas imagino que em outras linguagens e semelhante.Muito Grato. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Kakao Postado Novembro 19, 2010 Denunciar Share Postado Novembro 19, 2010 (editado) Se eu entendi você quer transmitir binário e não texto. Neste caso tente assim:numero = 50 self.ser.write('%c\r\n' % (numero)) Editado Novembro 19, 2010 por Kakao Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Iran Postado Novembro 22, 2010 Autor Denunciar Share Postado Novembro 22, 2010 Kakao Obrigado por Responder,Resolvi o problema assim:comm = chr(self.slider.get()+33)+'\r\n'me parece que só posso mandar os caracteres imprimíveis daí o 33, no programa que recebe os dados converto para a faixa de 0 a 100.mas vou testar também essa sua dica. Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Iran
Senhores,
Preciso transmitir pela serial um número decimal que varia de 0 a 100
+ carriage return + line feed.
se o mumero é 50(dec) = 32(hex) a string seria:
mumero = '\x32\x0a\x0d' ou numero = '\x32\r\n' transmitada com:
self.ser.write(numero)
Se faço assim acontece o que quero, estou usando python + pyserial
Ai pego o 50(dec) e faço
hex(50) para converter para hexa ele tranforma na string:
'0x32'
Imaginei que teria de substituir o O por \ e adicionar CR+LF, fiz então:
numero = '\\' + (hex(50))[1:] + '\r\n'
'\\' para inserir uma barra (a primeira é o scape)
(hex(50))[1:] para converter o 50(dec) em 0x32(hex) e retirar o zero ficando x32
'\r\n' para adicionar o carriage return + line feed
Ai mostro a string numero (digitando numero) aparece:
'\\x32\r\n' (com uma barra a mais no início)
Se mando imprimir com:
print numero
Aparece:
\x32 é feito o CR e o LF
Imaginei que era assim funcionaria mas quando envio com
self.ser.write(numero)
Não funciona.
Se alguém consegiu entender essa descrição do problema e souber uma soluçao poderia por favou me mostra com faz ?
Sei que python é pouco usada mas imagino que em outras linguagens e semelhante.
Muito Grato.
Link para o comentário
Compartilhar em outros sites
2 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.