串口通信
摘要
之前要基于树莓派做一个设计,在这里面由于需要使用一个USB外设,
没办法只能通过串口通信来从USB外设那里读取数据。
外设的检测
首先在目录下,确认外设的名称(这一步是所有的前提,之前一起做的一同事就是因为这个外设都没有驱动起来),可以使用以下步骤来完成目标:
1.首先将usb设备查到USB接口中,USB设备是热插拔的,不用断电即可插入。
2.执行 ls /dev指令查询 /dev 目录下的设备名称,看是否存在类似于 ttyUSB的设备,如果有,那可说设备插入成功了
3.将设备从树莓派上拔出,重新执行 ls /dev指令,若2步骤中的设备名消失,则2中设备名即为我们所需的设备名。(如在我的个人pc上设备名为 ttyUSB0)
串口通信软件minicom的配置和安装
在linux内置的源里会有minicom,因此可以使用一条简单的命令,即可安装我们的软件。
sudo apt install minicom
sudo minicom -s #配置minicom
1.选择Modem and dialing
2.将文件的A B K 选项内容删掉
3.选择 Save setup as dfl 保存设置
之后再退出就好了,此时连上设备,打开minicom就可以看到从串口读到的数据了。
在运行以下Python程序就可以实现将数据读到程序中并且使用。
python通信源代码
#--*encoding:UTF-8*--
import serial
import os
portx="/dev/ttyUSB0"
bps= 9600
timex=5
def posiion_get():
ser = serial.Serial(portx, int(bps), timeout=1, parity=serial.PARITY_NONE,stopbits=1)
if (ser.isOpen()):
print("open success")
os.system('minicom &')
#ser.write("hello".encode())
line = ser.readline()
if(line):
#print(str(line) )
temp = str(line)
temp = temp.split('=')
#print(temp)
temp_x_y=[]
for i in [1,2]:
tempq=temp[i]
tempq=tempq.split('C')
tempq=int(tempq[0])
temp_x_y.append(tempq)
#print(temp_x_y)
line=0
return temp_x_y
(x,y)=posiion_get()
print(x,y)
## 希望大家多多指教,共同进步