python串口通信_python 读取串口数据的示例

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

sudo rm /usr/bin/python

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

以上就是python 读取串口数据的示例的详细内容,更多关于python 读取串口数据的资料请关注脚本之家其它相关文章!

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值