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读取串口数据的资料请关注毛票票其它相关文章!