pyserial

时间:2016-03-17 04:45:27

标签: python pyserial msp430 contiki

我正在尝试编写一个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

1 个答案:

答案 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脚本读取数据。