树莓派通过串口接发数据(serial版)

    这次我要通过树莓派3B的串口和电脑互相发送数据,但是树莓派只有一个实实在在能用的串口ttyAMA0,另外一个还是迷你的串口,无法正常使用

    那这样我们就要利用到我的前一篇文章,既然串口要被使用,我们就不能使用串口连接登录树莓派,可以采用一根网线登录或者ssh登录


1、修改文件

输入 sudo vim /boot/cmdline.txt

删掉里面的 console=serial1,115200 和 kgdboc=serial1,115200 ,这样你才能正常地使用串口,不然后面会出现Permission denied

最终变为:

dwc_otg.lpm_enable=0 console=tty1 root=/dev/mmcblk0p2  rootfstype=ext4 elevator=deadline fsck.repair=yes  rootwait


2、安装python-serial模块

输入 sudo apt-get install python-serial  

安装一看发现原来就有的,笑哭

我咋就没从python开始安装呢。。。

树莓派还是比较完备的,python2、3都有,不少模块也都随身携带,在此赞一下


3、启动python IDE

输入 python3

创建serial实例ser,端口为 ‘/dev/ttyAMA0',波特率设置为115200bps,第三个为校验位,可以不写

>>> import serial
>>> ser = serial.Serial('/dev/ttyAMA0',115200)

检验串口是否打开,若未打开则输入 ser.open() 打开

>>> ser.isOpen()  
True 

4、打开串口调试助手

我用的是百度下的友善串口调试助手,端口设置好之后我们点击上方的启动按钮,下方就会出现opened的绿色字样



然后我们在树莓派的python里发消息,检测发送是否正常:

>>> ser.write(b'Raspberry pi')
12

接收成功!



最后我们写一个python脚本代码,实现串口的发送和接收:

# -*- coding: utf-8 -*
import serial
import time
ser = serial.Serial('/dev/ttyAMA0', 115200)
if ser.isOpen == False:
    ser.open()                # 打开串口
ser.write(b"Raspberry pi is ready")
try:
    while True:
        size = ser.inWaiting()               # 获得缓冲区字符
        if size != 0:
            response = ser.read(size)        # 读取内容并显示
            print response        
            ser.flushInput()                 # 清空接收缓存区
            time.sleep(0.1)                  # 软件延时
except KeyboardInterrupt:
    ser.close()


运行树莓派端的python程序,我们试着发送一串消息过去



树莓派成功接收,大功告成!


评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

姜亚轲

你花钱的样子真帅

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值