最简单的树莓派+python3+串口通信的教程以及出现的问题的解决方式

寒假打算做个东西,需要用到串口通信,就百度教程,但是发现教程参差不齐,非常麻烦,什么下载这个下载那个,装什么minicom,简直了,于是在这里简化所有的步骤,一次搞定树莓派+python3+串口通信的开发!!!!!!

首先把树莓派和电脑端链接起来,接线方式如下:

最简单的树莓派+python3+串口通信的教程以及出现的问题的解决方式_第1张图片

如果不知道树莓派的串口在哪里,下面附上查看的命令:

最简单的树莓派+python3+串口通信的教程以及出现的问题的解决方式_第2张图片

输入 gpio readall 的命令就可以看了,如果不知道树莓派引脚排列,欢迎去看我的另一个教程,专门有解释哦。

---------------------------------------------------------------------------------------------------------------------------------------------

然后打开一个py文件,输入以下代码:

# -*- coding:utf-8 -*-
import serial
import time
ser = serial.Serial("/dev/ttyAMA0", 9600)  # 位置1
ser.flushInput()  # 位置2
ser.write("begin".encode("utf-8"))  # 位置3
def main():
    while True:
        count = ser.inWaiting()  # 位置4
        if count != 0:
            recv = ser.read(count)  # 位置5
            ser.write("Recv some data is : ".encode("utf-8"))  # 位置6
            ser.write(recv)  # 位置7
            ser.flushInput()
        time.sleep(0.1)  # 位置8

if __name__ == '__main__':
    main()

下面一个一个解释:

# 位置1:打开串口的命令,"/dev/ttyAMA0" 不一定是固定的,需要在这里查看

最简单的树莓派+python3+串口通信的教程以及出现的问题的解决方式_第3张图片

后面的9600是波特率,常用的有 115200 9600,其他的默认设置就可以。

# 位置2:先清空缓冲区域,省得有垃圾数据没有被接收影响我们的工作

# 位置3:串口发送一个字符串,这里需要用到encode,因为write 这个方法发送以二进制发送,接受也是接收的二进制,所以才要编码为这个,当然,我的文件编码是utf-8。

发送数据之后,还会返回一个整数,为发送的字符数量。

# 位置4:得到当前未接收的数据有多少个

# 位置5:将这么多数据全部读取出来。

# 位置6、7:回显接收的数据。因为接收的也是字节流,所以不需要编码,直接就能发送出去。

# 位置8:可以不要,但是为了不占用太多CPU资源,就可以适当写一下。

# 要点:要用 sudo 权限运行,否则无法使用串口。

就这么多即可完成串口通信,很简单吧。嘿嘿。

 

 

你可能感兴趣的:(raspberrrpi,Python,linux)