python树莓派串⼝通信实例_树莓派串⼝(UART)编程
Python⽰例
python怎么读取串口数据前⾔
本⽂将详细介绍树莓派的串⼝(UART)配置和使⽤,并结合⼀个modbus RTU从机的例⼦说明树莓派串⼝的应⽤。
在开始前说明以下⼏点
1.树莓派UART端⼝的位置
TXD位于HEAD-8
RXD位于HEAD-10
GND位于HEAD-6(可选其他GND)
2.树莓派的TXD应接USB转串⼝设备的RXD,当然如果测试失败请交换RXD和TXD的顺序
3.经过很多次的测试(N>25),当波特率为115200时打开树莓派的UART时,树莓派会莫名其妙的发送⼀字节0xF8,该问题始终⽆法解决。不过波特率为9600时并没有此问题,猜测是树莓派硬件或内核驱动问题。
4.树莓派的串⼝默认为SSH调试使⽤,若要使⽤串⼝需要修改两处⽂件。
5.201
6.11起新系统需要通过这个⽅法开启SSH服务
修改两处⽂件
1./
输⼊以下指令
sudo nano /
删除以下部分
console=ttyAMA0,115200 kgdboc=ttyAMA0,115200
最终变为
dwc_otg.lpm_enable=0 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait
2./etc/inittab
输⼊以下指令
sudo nano /etc/inittab
注释最后⼀⾏内容
#T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100
使⽤minicom
配置完之后便可测试⼀下树莓派的UART是否正常⼯作,⽽minicom便是⼀个简单好⽤的⼯具。minicom是linux平台串⼝调试⼯具,相当于windows上的串⼝调试助⼿。
1.minicom安装
sudo apt-get install minicom
2.minicom启动
minicom -b 9600 -o -D /dev/ttyAMA0
#-b代表波特率,-D代表端⼝,/dev/ttyAMA0 类似于windows中的COM1,-o功能暂时未知。
3.minicom发送内容
直接在控制台中输⼊内容即可,如果minicom打开了回显可在控制台中观察到输出内容,如果回显关闭则控制台中没⼈任何反应,千万不要以为minicom没有正常⼯作。
4.minicom回显控制
先Ctrl+A,再E。可翻转回显状态(原来回显打开则此事回显关闭)
5.minicom回显关闭
先Ctrl+A,再Q。
使⽤pyserial
minicom仅满⾜调试⽤途,如果需要编程解决问题那么python的serial扩展库——pyserial则是⼀个不错的选择。pyserial模块⾮常好⽤,后⾯的⽂章还会分析如何使⽤pyserial控制GPRS模块。
1.pyserial安装
安装pyserial扩展库有很多种⽅法,可使⽤pip或者easy_install安装,也可以直接选择apt-get⼯具安装。
若使⽤apt-get⼯具安装,可输⼊以下指令
sudo apt-get install python-serial
2.串⼝回显程序
⾮常简单的⼀个串⼝程序,树莓派通过串⼝返回接收的内容。
# -*- coding: utf-8 -*
import serial
import time
# 打开串⼝
ser = serial.Serial("/dev/ttyAMA0", 9600)
def main():
while True:
# 获得接收缓冲区字符
count = ser.inWaiting()
if count != 0:
# 读取内容并回显
recv = ad(count)
ser.write(recv)
# 清空接收缓冲区
ser.flushInput()
# 必要的软件延时
time.sleep(0.1)
if __name__ == '__main__':
try:
main()
except KeyboardInterrupt:
if ser != None:
ser.close()
总结
由于可借助python标准库使得树莓派的串⼝格外好⽤。是不是可以拿树莓派做⼀个Modbus RTU从机,的确可以请期待后⾯的博⽂吧。参考资料
1.minicom使⽤国外博客
2.elinux python-serial 安装pyserial及例程等
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论