我正在尝试编写一个pyserial(v2.6)代码,该代码应该无限期地等待来自使用inWaiting()
指定的端口的任何输入,然后使用read()
读取它但是没有运气也没有输出完全。我究竟做错了什么?该程序根本不打印任何东西!
编辑:程序和端口都在Contiki OS的虚拟机上运行
Edit2:z1 mote是连接到端口的设备。我发现pyserial用于写入它(我无法将pyserial升级到最新版本,因为它不会与z1 motes一起锻炼)
完整代码:
import pyserial
baudrate = 115200
port = '/dev/ttyUSB0'
ser = serial.Serial(port,baudrate)
while 1:
time.sleep(1)
coming_data = ser.inWaiting()
if coming_data != 0:
data = ser.read(coming_data)
print data
# the output from the port is (which should be the output of this program)
# abcd::abcd:0:0:c9 2293 6 -3 243 -23 108
# abcd::abcd:0:0:c9 2337 8 -4 242 -27 108
答案 0 :(得分:2)
请改为尝试:
import serial
import sys
from time import sleep
try:
ser = serial.Serial("/dev/ttyUSB0", 115200,timeout=0, parity=serial.PARITY_NONE,
stopbits=serial.STOPBITS_ONE, bytesize=serial.EIGHTBITS)
except:
sys.exit("Error connecting device")
while True:
queue = ser.inWaiting()
if queue > 0:
data = ser.read(1000)
print data
sleep(0.2)
问题可能与不按Zolertia Z1 mote的预期配置所有UART设置有关。
更新:请确保其他进程未使用与端口的连接。因为如果它在其他地方打印,那么它就无法通过python脚本读取数据。