我使用USB转RS232线缆与纯rs232设备进行通信。 使用pyserial lib,这个代码在loopback中运行tx - > rx电缆引脚。
设置端口:
def __init__ (self, baudrate,timeout,parity,stopbits,bytesize):
try:
#self.s = serial.Serial(port="'/dev/ttyUSB0'",baudrate=baudrate,timeout=timeout,parity=parity,stopbits=stopbits,bytesize=bytesize)
#self.s = serial.Serial("/dev/ttyUSB0",9600)
self.s=serial.Serial(
"/dev/ttyUSB0",
baudrate=9600,
parity=serial.PARITY_NONE,
stopbits=serial.STOPBITS_ONE,
bytesize=serial.EIGHTBITS,
writeTimeout = 0,
timeout = 10,
rtscts=False,
dsrdtr=False,
xonxoff=False)
except:
print ("Can't open Serial Port")
traceback.print_exc(file=sys.stdout)
写作和阅读:
def write(self,data):
if self.s.isOpen():
try:
self.s.write(data)
self.s.flush()
except:
traceback.print_exc(file=sys.stdout)
print "Error on writing"
else:
print "Port is closed"
def read(self):
receivedData=[]
if self.s.isOpen():
try:
while self.s.inWaiting()> 0:
receivedData.append(self.s.read(1))
return receivedData
except:
traceback.print_exc(file=sys.stdout)
print "Error on Reading"
else:
print "Port is closed"
traceback.print_exc(file=sys.stdout)
我发送了Carlos'
并收到[' \ x03',' \ x01',' \ x12',' \ x0c',' \ x0f',' \ x13']
它是^ C ^ a ^ r ^ l ^ o ^ s
的十六进制表示我需要知道它为什么要将字符转换为控制字符?
答案 0 :(得分:0)
如果发送端仅使用5位,这就是您所期望的。
首先检查发送设备上的设置
如果可能,请使用示波器或逻辑分析仪验证位是否正在发送
也许加密狗坏了。
也许系统的某些部分电源不足,最后3位没有被正确检测到。
答案 1 :(得分:0)
经过多次尝试,不知道如何解决这个问题,我买了新的有线USB转RS232,它基于Prolific PL2303芯片组,现在它正常工作。