如何利用python实现读取串口的数据

  介绍

这期内容当中小编将会给大家带来有关如何利用python实现读取串口的数据,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

<强> python3读取串口数据演示

最近在写一个演示,zigbee串口连接树莓派,树莓派使用串口通信接受无线个域网穿过来得值。其中我是用的树莓派是3代B +,无线个域网每隔三秒钟从串口输出数据。
下面是python串口通信,但是不是linux的,是我在窗户上写的测试演示,python版本是3 .

<强> python串口读取数据

 # TODO串口读取数据
  #作者wjw
  
  进口系列#导入串口包
  导入时间#导入时间包
  
  
  ser=serial.Serial(115200年“COM3"超时=5)#开启com3口,波特率115200,超5时
  ser.flushInput() #清空缓冲区
  
  def main ():
  而真正的:
  数=ser.inWaiting() #获取串口缓冲区数据
  如果计数!=0:
  recv=ser.read (ser.in_waiting) .decode (“gbk") #读出串口数据,数据采用gbk编码
  print (time.time (),“- - - recv——比;“recv) #打印一下子
  time . sleep(0.1) #延时0.1秒,免得CPU出问题
  
  
  
  if __name__==& # 39; __main__ # 39;:
  main () 

上边的代码就已经实现python串口读数了,但大部分还需要写入。

<强>串口写入数据

其实就是一个写方法,我开了一个线程,在线程里获取串口出来的数据,然后一个死循环每隔一秒发1,每隔一秒发0。

进口系列
  导入的时间
  进口_thread #导入线程包
  
  data_ser=serial.Serial(115200年“COM3"超时=5)
  data_ser.flushInput ()
  
  
  
  def get_data ():
  而真正的:
  data_count=data_ser.inWaiting ()
  如果data_count !=0:
  recv=data_ser.read (data_ser.in_waiting) .decode (“gbk")
  print (time.time (),“- - - data_recv——比;“recv)
  time . sleep (0.1)
  
  
  
  if __name__==& # 39; __main__ # 39;:
  
  _thread.start_new_thread (get_data()) #开启线程,执行get_data方法
  而1:
  time . sleep (20)
  data_ser.write (b # 39; 1 & # 39;) #发送二进制1
  time . sleep (20)
  data_ser.write (b # 39; 0 & # 39;) #发送二进制0 

完成了,应该差不多就这样!
树莓派自带python,但是默认是python2,可以两行命令修改默认python3

 sudo rm/usr/bin/python 
sudo ln - s/usr/bin/python3.4/usr/bin/python

上述就是小编为大家分享的如何利用python实现读取串口的数据了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注行业资讯频道。

如何利用python实现读取串口的数据