一、Linux下訪問串口
- 串口位置:/dev/tty**
在Linux系統中,串口設備是通過串口終端設備文件來訪問的,也就是通過訪問/dev/ttyS0、/dev/ttyS1、/dev/ttyS2、/dev/ttyS3 、/dev/ttyUSB* 這是USB轉串口。這些設備文件實現對串口的訪問。
1.1.2 查看串口
-
ls命令:
ls -l /dev/tty* -
查看有哪些設備連接在你的電腦上:
lsusb -
產看串口個數以及對應的tty:
dmesg | grep ttyS*

我使用了一個usb擴展器,這邊可以看到,被連接在ttyUSB0上的就是我的usb擴展器,我在上面連接了3個外接設備,都是被連接在ttyUSB0上。
如何綁定設備到具體的usb串口
udev 是通過內核產生設備名增加別名的方式來達到 不管設備連接的順序而維持一個統一的設備名。內核通常會產生自定義的設備名 如sda1 sdb1等
,但是udev可以通過設備的其他信息如總線 ,生產商等不同來區分不同的硬件設備。在/etc的 目錄下。
例如 :ubuntu內核中,產生sda 設備名,可以通過制定 udev規則,讓udev 除了產生/dev/sda/ 設備文件外, 另外創建 一個符號鏈接叫 /dev/name ,這樣在ros串口處理的程序中,就 可以使用 產生的新的 設備名。
通過lsusb 命令可以查看到所有外接usb的接口設備的描述列表,可以得到id product和id VENDOR的數值,來進行后續的綁定。 ls /dev 可以查看所有 外接串口設備的名字列表。
首先 ,所有制定的udev 規則最終 會在 /etc/ udev /rule.d 這個文件夾下面 。
通過芯片的特定碼,來產生軟鏈接別名
可以一個腳本如下:
echo 'KERNEL=="ttyUSB*", ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="7523", MODE:="0666", GROUP:="dialout", SYMLINK+="dashgo"' >/etc/udev/rules.d/ch34x.rules
綁定 1a86 7523 的串口設備, 會在/etc/udev/rule.d 下 產生 相應的 規則文件,ttyUSB產生新的別名即 dashgo。
使修改生效
sudo udevadm trigger
察看綁定是否成功
ls -l /dev/
看看里面是否存在一個叫做dashgo的硬件
如果有的話,那么ros中通信協議的時候硬件名稱就可以寫上dashgo來代替ttyUSB0等等。
如果想要打開串口時不需要root權限,創建文件/etc/udev/rules.d/70-ttyusb.rules,寫入:
KERNEL=="ttyUSB[0-9]*",MODE="0666"
- 查看串口的驅動信息
cat /proc/tty/driver/serial
<a href="https://blog.csdn.net/csdn__dongdong/article/details/83105020" target='_blank'>串口綁定</a>
