python 读取串口数据的示例
python3读取串口数据demo
最近在写一个demo,zigbee串口连接树莓派,树莓派使用串口通信接受zigbee穿过来得值。其中我是用的树莓派是3代B+,zigbee每隔三秒钟从串口输出数据。
下面是python串口通信,但是不是linux的,是我在windows上写的测试demo,python版本是3。
python串口读取数据
#TODO串口读取数据
#Autherwjw
importserial#导入串口包
importtime#导入时间包
ser=serial.Serial("COM3",115200,timeout=5)#开启com3口,波特率115200,超时5
ser.flushInput()#清空缓冲区
defmain():
whileTrue:
count=ser.inWaiting()#获取串口缓冲区数据
ifcount!=0:
recv=ser.read(ser.in_waiting).decode("gbk")#读出串口数据,数据采用gbk编码
print(time.time(),"---recv-->",recv)#打印一下子
time.sleep(0.1)#延时0.1秒,免得CPU出问题
if__name__=='__main__':
main()
上边的代码就已经实现python串口读数了,但大部分还需要写入。
串口写入数据
其实就是一个write方法,我开了一个线程,在线程里获取串口出来的数据,然后一个死循环每隔一秒发1,每隔一秒发0.
importserial
importtime
import_thread#导入线程包
data_ser=serial.Serial("COM3",115200,timeout=5)
data_ser.flushInput()
defget_data():
whileTrue:
data_count=data_ser.inWaiting()
ifdata_count!=0:
recv=data_ser.read(data_ser.in_waiting).decode("gbk")
print(time.time(),"---data_recv-->",recv)
time.sleep(0.1)
if__name__=='__main__':
_thread.start_new_thread(get_data,())#开启线程,执行get_data方法
while1:
time.sleep(20)
data_ser.write(b'1')#发送二进制1
time.sleep(20)
data_ser.write(b'0')#发送二进制0
完成了,应该差不多就这样!
树莓派自带python,但是默认是python2,可以两行命令修改默认python3
sudorm/usr/bin/python
sudoln-s/usr/bin/python3.4/usr/bin/python
以上就是python读取串口数据的示例的详细内容,更多关于python读取串口数据的资料请关注毛票票其它相关文章!