串口读取数据的方法
时间: 2023-12-29 07:04:23 浏览: 33
串口读取数据的方法主要有两种:一种是阻塞式读取,另一种是非阻塞式读取。
阻塞式读取:
在阻塞式读取中,程序会一直等待串口接收缓存区中有数据可读,然后再读取。这种方法适合于数据量较小且要求实时性较高的场景。下面是一个使用阻塞式读取的示例代码:
```
import serial
ser = serial.Serial('/dev/ttyUSB0', 9600)
while True:
data = ser.read() # 阻塞式读取
print(data)
```
在上面的代码中,我们通过serial.Serial()函数创建了一个串口对象,并打开了/dev/ttyUSB0这个串口。然后在while循环中,通过read()方法阻塞式读取串口接收缓存区中的一个字节,然后将其打印出来。如果接收缓存区中没有数据可读,程序会一直等待,直到有数据可读。
非阻塞式读取:
在非阻塞式读取中,程序会先检查串口接收缓存区中是否有数据可读,如果有则立即读取,否则立即返回。这种方法适合于数据量较大或不需要实时性的场景。下面是一个使用非阻塞式读取的示例代码:
```
import serial
ser = serial.Serial('/dev/ttyUSB0', 9600)
while True:
if ser.in_waiting:
data = ser.read(ser.in_waiting) # 非阻塞式读取
print(data)
```
在上面的代码中,我们通过serial.Serial()函数创建了一个串口对象,并打开了/dev/ttyUSB0这个串口。然后在while循环中,通过in_waiting属性检查串口接收缓存区中是否有数据可读,如果有则使用read()方法非阻塞式读取全部数据,然后将其打印出来。如果接收缓存区中没有数据可读,程序会立即返回。