Raspberry PI USB转RS232适配器仅接收Ctrl Chars

时间:2015-06-10 19:03:20

标签: python serial-port raspberry-pi pyserial

我使用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

的十六进制表示

我需要知道它为什么要将字符转换为控制字符?

2 个答案:

答案 0 :(得分:0)

如果发送端仅使用5位,这就是您所期望的。

首先检查发送设备上的设置 如果可能,请使用示波器或逻辑分析仪验证位是否正在发送 也许加密狗坏了。
也许系统的某些部分电源不足,最后3位没有被正确检测到。

答案 1 :(得分:0)

经过多次尝试,不知道如何解决这个问题,我买了新的有线USB转RS232,它基于Prolific PL2303芯片组,现在它正常工作。