gpt4 book ai didi

python - 如何使用Python快速读取单字节串口数据

转载 作者:行者123 更新时间:2023-11-28 19:20:40 25 4
gpt4 key购买 nike

我正在使用以下代码在 Python 中读取串行数据:

port = "COM11"
baud = 460800
timeout=1

ser = serial.Serial()
ser.port = port
ser.baudrate = baud
ser.timeout = timeout
while 1:
# Read from serial port, blocking
data =ser.read(1)
print data
# some further processing of data

我正在以非常快的速度发送数据,但是当我使用此代码时,我以非常慢的速度获取数据,大约每秒 2 - 3 个数据。这太慢了,因为我想进行实时绘图。

所以,我没有尝试使用上面的代码:

 while 1:
# Read from serial port, blocking
data =ser.read(1)
data1=(data)


# If there is more than 1 byte, read the rest
n = ser.inWaiting()
data1 = (data1 + ser.read(n))
print data1

现在数据更新的速度是一样的,但我检查的不是单个字节,而是输入队列中的多个字节并读取它们。我每个循环接收大约 3850 个字节,所以这个循环对我来说看起来更快,但实际上它几乎相同,唯一的变化是我没有读取更多的字节。

我想读取一个字节并检查接收到的实时时间。为此,我不能在使用 ser.inWaiting() 的地方使用第二种方法。我怎样才能比使用上述方法更快地读取单字节数据?

最佳答案

这是我为一个项目编写的一些测试代码,您可以使用它来尝试不同的波特率设置。基本上它在 Tx 上发送一些数据(可以直接连接到 Rx)并期望数据被回显。然后它将返回的数据与发送的数据进行比较,并让您知道是否/何时发生错误。请注意,如果没有错误,则输出将保持空白,并且在测试结束时将打印“0 Comm Errors”。

import serial, time

test_data = "hello this is so freakin cool!!!" + '\r' #Must always be terminated with '\r'
echo_timeout = 1 #the time allotted to read back the test_data string in seconds
cycleNum = 0
errors = 0
try:
ser = serial.Serial(port="COM1", baudrate=115200, timeout=1)
ser.flush()
print "starting test"
for x in xrange(100):
cycleNum += 1
d = ser.write(test_data)
ret_char = returned = ''
start_time = time.time()
while (ret_char <> '\r') and (time.time() - start_time < echo_timeout):
ret_char = ser.read(1)
returned += ret_char
if not returned == test_data:
errors += 1
print "Cycle: %d Sent: %s Received: %s" % (cycleNum, repr(test_data), repr(returned) )
except Exception as e:
print 'Python Error:', e
finally:
if 'ser' in locals():
print "%d Comm Errors" % errors
if ser.isOpen():
ser.close()
print "Port Was Successfully Closed"
else:
print "Port Already Closed"
else:
print "Serial Variable Was Never Initialized"

关于python - 如何使用Python快速读取单字节串口数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26008937/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com