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 = ad(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 = ad(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⽅法
python怎么读取串口数据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 读取串⼝数据的资料请关注其它相关⽂章!