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,命令在我之前的博客。

posted @   叫我+V  阅读(13033)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
历史上的今天:
2018-12-26 数据结构知识点大全
点击右上角即可分享
微信分享提示