Raspberry PI USB 到 RS232 适配器仅接收 Ctrl 字符
Raspberry PI USB to RS232 adapter Receiving Only Ctrl Chars
我正在使用 USB 转 RS232 电缆与纯 rs232 设备进行通信。
使用 pyserial lib a 在环回 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的十六进制表示
我需要知道它为什么将字符转换为控制字符?
如果发送端仅使用 5 位,这就是您所期望的。
首先检查发送设备上的设置。
如果可能,请使用示波器或逻辑分析仪验证正在发送的位。
可能加密狗坏了。
也许系统的某些部分电源供应不足,最后 3 位未被正确检测到。
经过多次尝试,不知道如何解决这个问题,我买了新的 USB 到 RS232 电缆,它基于 Prolific PL2303 芯片组,现在工作正常。
我正在使用 USB 转 RS232 电缆与纯 rs232 设备进行通信。 使用 pyserial lib a 在环回 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的十六进制表示
我需要知道它为什么将字符转换为控制字符?
如果发送端仅使用 5 位,这就是您所期望的。
首先检查发送设备上的设置。
如果可能,请使用示波器或逻辑分析仪验证正在发送的位。
可能加密狗坏了。
也许系统的某些部分电源供应不足,最后 3 位未被正确检测到。
经过多次尝试,不知道如何解决这个问题,我买了新的 USB 到 RS232 电缆,它基于 Prolific PL2303 芯片组,现在工作正常。