2015-10-14 3 views
3

Я пытаюсь отправить эту команду «: 01050801FF00F2» по последовательному в python 2.7, без успеха. код, который я использую:Отправка последовательного сообщения в python

import serial, sys ,socket 
from time import sleep 
port = "COM9" 
baudRate = 9600 
try: 
    ser = serial.Serial(port, baudRate, timeout=1) 
    if not ser.isOpen(): 
      ser.open() 
except Exception, e: 
    print("Error opening com port. Quitting."+str(e)) 
    sys.exit(0) 
print("Opening " + ser.portstr) 

#this is few ways i am trying to send with 
c = '01050801FF00F2' 
ser.write(c.encode('utf-8')) 
sleep(3) 
ser.flushInput() #flush input buffer, discarding all its contents 
ser.flushOutput()#flush output buffer, aborting current output 
       #and discard all that is in buffer 
c = ':01050801FF00F2' 
ser.write(c.encode('hex')) 

sleep(3) 
ser.write(':01050801FF00F2') 
+0

Можете ли вы дать добавить журнал ошибок, что вам получаются. Также вы пробовали использовать pyserial –

+0

У меня нет ошибки, но сообщение не достигло его destinatio n, поэтому я предполагаю, что с моим кодом что-то не так. (я предполагаю, что, поскольку на другом языке (tcl) он работает). что такое pyserial? – user3903403

+0

oh my bad i havent правильно посмотрите на код, что вы уже используете pyserial пакет python. Попробуйте добавить эту строку в конец - ser.close(). Также удалите flushOutput, потому что он закрывает соединение –

ответ

0

Пытались ли вы отправить команду с помощью ByteArray?

Может быть, вы могли бы попробовать:

ser.write(b':01050801FF00F2') 

или

ser.write(':01050801FF00F2'.encode()) 
1

Если те шестнадцатиричное значение, это должно работать:

c = '\x01\x05\x08\x01\xFF\x00\xF2' 
ser.write(c) 
Смежные вопросы