如何从端口读取输入并打印到终端

时间:2013-11-04 22:16:11

标签: python port output pyserial contiki

这是情况:

我有两个邮票,一个连接到端口:/ dev / ttyUSB1,一个外部连接,未连接。外部程序上有一个(基于Contiki)程序,可以(每2秒)将一个字母发送到插入计算机的标记。插入计算机的邮票有一个程序,也是基于Contiki的程序,它通过无线电信号读取这些信息。

现在,我编写了一个python程序,使用pyserial,它旨在读取进入端口的信息并将其显示在终端中。我知道消息正确到达,因为我可以从通过USB连接到终端的邮票打印消息。但是我无法从python代码中读取信息。

import serial, time, threading

ser = serial.Serial()
ser.port = "/dev/ttyUSB1"
ser.baudrate = 9600
ser.bytesize = serial.SEVENBITS 
ser.parity = serial.PARITY_EVEN 
ser.timeout = 0.1     
ser.rtscts = 1

try: 
    ser.open()
except Exception, e:
    print "error open serial port: " + str(e)
    exit()
if ser.isOpen():
try:
    numOfLines = 0
    while True:
        print ser.read()
        numOfLines = numOfLines + 1
        time.sleep(2)
        if (numOfLines >= 50):
            break
    ser.close()
except Exception, e1:
    print "error communicating...: " + str(e1)
else:
    print "cannot open serial port "

运行时,它会打印几个一致但随机的字母,而不是每隔几秒打印一次从邮票发送的预期字母。例如:

w
z
z
w
g
z
g
z
z
z
w
z
w

当我移除连接到印章的USB时,程序没有输出。所以它必须从端口读取一些东西...任何帮助将非常感激。

1 个答案:

答案 0 :(得分:1)

听起来这可能是波特率的问题。你没有发布执行此操作的代码:

ser = serial.Serial('/dev/ttyUSB1', timeout=1, baudrate=9600, rtscts=1)