Linux下串口操作


一、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>


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM