ubuntu系统python实现串口通信

我使用的是USB-TTL串口,下面是测试之前的一些准备工作。

ls /dev/  #查看设备,插拔串口设备注意有没有新增设备
dmesg|grep ttyUSB*
dmesg|grep ttyS*
sudo chmod 666 /dev/ttyUSB0 #更改串口读写权限
pip3 install pyserial #安装pyserial库

串口发数据python demo

import serial
import time
import _thread # 导入线程包

data_ser = serial.Serial("/dev/ttyUSB0",9600,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(2)
        data_ser.write(b'1') # 发送二进制1
        time.sleep(2)
        data_ser.write(b'0') # 发送二进制0

串口接受数据并返回python demo

import serial # 导入串口包
import time # 导入时间包

ser = serial.Serial("/dev/ttyUSB0",9600,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编码
            ser.write(b'get')
            print(time.time()," --- recv --> ", recv) # 打印一下子
        time.sleep(0.1) # 延时0.1秒,免得CPU出问题

if __name__ == '__main__':
    main()

常用方法:
ser.isOpen():查看端口是否被打开。
ser.open() :打开端口‘。
ser.close():关闭端口。
ser.read():从端口读字节数据。默认1个字节。
ser.read_all():从端口接收全部数据。
ser.write(“hello”):向端口写数据。
ser.readline():读一行数据。
ser.readlines():读多行数据。
in_waiting():返回接收缓存中的字节数。
flush():等待所有数据写出。
flushInput():丢弃接收缓存中的所有数据。
flushOutput():终止当前写操作,并丢弃发送缓存中的数据。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值