zoukankan      html  css  js  c++  java
  • python3 读取串口数据

    python3 读取串口数据 demo

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

    python串口读取数据

    # TODO 串口读取数据
    # Auther wjw
    
    import serial  # 导入串口包
    import time  # 导入时间包
    
    
    ser = serial.Serial("COM3",115200,timeout = 5)  # 开启com3口,波特率115200,超时5
    ser.flushInput()  # 清空缓冲区
    
    def main():
        while True:
            count = ser.inWaiting() # 获取串口缓冲区数据
            if count !=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.

    import serial
    import time
    import _thread   # 导入线程包
    
    data_ser = serial.Serial("COM3",115200,timeout = 5)
    data_ser.flushInput()
    
    
    
    def get_data():
        while True:
            data_count = data_ser.inWaiting()
            if 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__ == '__main__':
        
        _thread.start_new_thread(get_data,())  # 开启线程,执行get_data方法
        while 1:
            time.sleep(20)  
            data_ser.write(b'1')  # 发送二进制1
            time.sleep(20)
            data_ser.write(b'0') # 发送二进制0
    
    

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

  • 相关阅读:
    第五章 项目范围管理
    一位华为IT总监的12大职场经验谈
    接到面试通知后该做什么
    经验借鉴:外包失败三条血泪经验分享
    项目范围管理收集需求
    绝对不能对老板说的十句傻话
    项目整合实施整体变更控制
    项目整合结束项目或阶段
    9招助你夺取更高职位
    IT人写好简历的原则与方法
  • 原文地址:https://www.cnblogs.com/wjw1014/p/12101825.html
Copyright © 2011-2022 走看看