正在使用Python从串行端口读取数据



我试图在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。你有代码来做这个的发送部分吗?

最新更新