我试图在csv
文件中读取和存储数据,每5秒从rs232串行端口使用Python保存数据包。在每一行中存储一个数据包的示例如下:308 921 q53 246 133 137 022 1 0 1 1 1 130 C13 330 0000000199 04002201
(有成千上万个不同的csv行,像这样),其中每个数字都有我需要绘图的含义。
我的问题是完全一样的,就像这样:从RS232串行端口编码/解码数据,我尝试了他们的解决方案,但仍然不适合我。
我尝试了以下代码:
import serial
rs232 = serial.Serial('COM6', 115200, timeout=2)
print(rs232.isOpen)
if rs232.isOpen() == True:
while True:
size = rs232.inWaiting()
if size:
data = rs232.read(size)
print(data)
else:
print('No Data Found!')
time.sleep(1)
else:
print('rs232 is not open.')
rs232.close()
输出为:
<bound method SerialBase.isOpen of Serial<id=0x24a180511c8, open=True>(port='COM6', baudrate=115200, bytesize=8, parity='N', stopbits=1, timeout=2, xonxoff=False, rtscts=False, dsrdtr=False)>
No Data Found!
b'x00'
No Data Found!
No Data Found!
No Data Found!
循环继续无限次,只打印No Data Found!.
期望的输出应该是一个csv
文件,其中每行将与上面给出的类似。该示例行是使用用非标准编程语言编写的软件生成的。
我也尝试了这个代码(https://stackoverflow.com/a/45458473/10543310),读取的输出总是空的。
我在Windows 10上使用Python v3.7.13, pyserial v3.5。
我没有使用python串行函数inWaiting(),我将如何编码它将是这样的:
while True:
data = ''
for c in rs232.read():
data += str(c)
if (data == ''):
print('No Data Found!')
else:
print(data)
time.sleep(1)
除此之外,它只能是没有数据实际上被发送到COM6。你有代码来做这个的发送部分吗?