Página 1 de 1

Transmitir pela serial

MensagemEnviado: 19 Nov 2010 00:33
por 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 qdo envio com

self.ser.write(numero)

Não funciona.

Se alguém consegui 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 a solucão é semelhante.

Muito Grato.

MensagemEnviado: 19 Nov 2010 00:45
por rcakto
olha, não programo em pyton, mas acredito que o erro esteja aqui:

numero = '\\' + (hex(50))[1:] + '\r\n'

tente por assim:

numero = '\' + (hex(50))[1:] + '\r\n'

acredito que \\ seria usando " e não ' ... conceguiu me entender?? pelomenos acontece muito isso com PHP...

MensagemEnviado: 19 Nov 2010 01:21
por Iran
entendi, porém nao é assim não, grato de qq forma.

MensagemEnviado: 19 Nov 2010 03:14
por Iran
Resolvido. Hoje qdo amanhecer o dia explico.