jak*_*e34 5 python serial-port
现在我正在使用Arduino将数据从模拟传感器发送到COM4.我正在尝试制作一个python脚本,持续监视该数据并查找某个参数.
我试过这样的事情,但它并没有正确提醒我
import serial
from Tkinter import *
import tkMessageBox
port = "COM4"
ser = serial.Serial(port,9600)
value = 0
while 1:
value = ser.read()
if value > 400:
tkMessageBox.showwarning(
"Open file",)
time.sleep(1)
Run Code Online (Sandbox Code Playgroud)
如果serial
您使用的包是pySerial ,请记下该Serial.read()
方法的定义:
\n\n\n
read(size=1)
参数:size \xe2\x80\x93 要读取的字节数。
\n返回:从端口读取的字节。
\n从串行端口读取 size 字节。如果设置了超时,它可能会根据请求返回更少的字符。如果没有超时,它将阻塞,直到读取请求的字节数。
\n在版本 2.5 中更改:如果可用(Python 2.6 及更高版本),则返回bytes实例,否则返回str实例。
\n
尽管您正在尝试处理byte
对象,但您可能(取决于 Python 版本)正在处理str
或bytes
(数组)对象。这些对象不一定对应于整数值。
即使byte
从 接收对象read()
,最大的无符号整数也将是 255。\nvalue
与 400 比较没有意义。尝试使用简单的调试输出查找返回对象的类型。
print type(value)\n
Run Code Online (Sandbox Code Playgroud)\n如果需要处理str
对象,请检查 for 转换的使用ord()
。
(flush
建议参考原问题,使用print
,而不是tkinter
)。
请参阅how-to-flush-output-of-python-print,并尝试使用命令行 shell,而不是可能影响输出缓冲的 IDE。
\n