2013-11-04 88 views
0

这里的情况:如何读取端口输入并打印到终端

我有两个印章,一个连接到端口是:/ 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

听起来这可能是波特率的问题。你没有发布这样做的代码:

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

嗨,那里,谢谢你的答案,但我得到的错误和以前完全一样。还有其他建议吗? – Ian

+0

你可以更新你的问题中的代码,所以我可以看看 – jramirez