我有一个螺线管控制硬件,我试图使用一个访问系统,根据设备的手册,我向设备和tri发送命令,以获得状态,但我只收到空行。在
了解端口状态的命令如下:读取锁止状态命令(车门开关状态的反馈)
起始板地址锁定地址命令检查码(XOR)
0X80 0X01–0XF 0X00-32 0X33 XX
锁地址为0X00,返回所有锁的状态,如果不是0,则返回此锁状态。在
例如:
a、 返回锁1的状态
例:上位机发送0X80 0X01 0X01 0X33 0XB2(十六进制),
返回
命令板地址锁定地址状态检查代码
0X80 0X01 0X01 0X11 0X91(锁定打开)
0X80 0X01 0X01 0X00 0X80(锁定关闭
b、 返回到所有锁的状态:
例:主机发送0X80 0X01 0X00 0X33 0XB2(十六进制),返回
起始板地址状态1状态2状态3状态4状态5状态6状态7
命令检查代码
0X80 0X01 0XFF 0XFF 0XFF 0XFF 0XFF 0XFF 0XFF 0XFF 0X33 0XXX
状态:从状态1到状态7,从高到低,对应的锁是1-50。在
这是我的代码:#!/usr/bin/env python
# based on tutorials:
# http://www.roman10.net/serial-port-communication-in-python/
# http://www.brettdangerfield.com/post/raspberrypi_tempature_monitor_project/
import serial, time
SERIALPORT = "/dev/ttyUSB0"
BAUDRATE = 9600
ser = serial.Serial(SERIALPORT, BAUDRATE)
ser.bytesize = serial.EIGHTBITS #number of bits per bytes
ser.parity = serial.PARITY_NONE #set parity check: no parity
ser.stopbits = serial.STOPBITS_ONE #number of stop bits
#ser.timeout = None #block read
#ser.timeout = 0 #non-block read
ser.timeout = 2 #timeout block read
ser.xonxoff = False #disable software flow control
ser.rtscts = False #disable hardware (RTS/CTS) flow control
ser.dsrdtr = False #disable hardware (DSR/DTR) flow control
ser.writeTimeout = 0 #timeout for write
print 'Starting Up Serial Monitor'
if ser.isOpen():
try:
ser.flushInput() #flush input buffer, discarding all its contents
ser.flushOutput()#flush output buffer, aborting current output
ser.write (serial.to_bytes([0X80,0X01,0X33,0XB2]))
print("write data: 0X80,0X01,0X33,0XB2")
time.sleep(0.5)
numberOfLine = 0
while True:
response = ser.readline()
print("read data: " + response)
numberOfLine = numberOfLine + 1
if (numberOfLine >= 8):
break
ser.close()
except Exception, e:
print "error communicating...: " + str(e)
else:
print "cannot open serial port "
这是我的结果:
读取数据:
读取数据:
读取数据:
读取数据:
读取数据:
读取数据:
读取数据:
读取数据:
你能帮帮我吗?我做错什么了?在