Linux下串口操做

1、Linux下訪問串口
  • 串口位置:/dev/tty**
    在Linux系統中,串口設備是經過串口終端設備文件來訪問的,也就是經過訪問/dev/ttyS0、/dev/ttyS一、/dev/ttyS二、/dev/ttyS3 、/dev/ttyUSB* 這是USB轉串口。這些設備文件實現對串口的訪問。
1.1.2 查看串口
  • ls命令:
    ls -l /dev/tty*ubuntu

  • 查看有哪些設備鏈接在你的電腦上:
    lsusb.net

  • 產看串口個數以及對應的tty:
    dmesg | grep ttyS*blog

~~~
我使用了一個usb擴展器,這邊能夠看到,被鏈接在ttyUSB0上的就是個人usb擴展器,我在上面鏈接了3個外接設備,都是被鏈接在ttyUSB0上。接口

如何綁定設備到具體的usb串口get

udev 是經過內核產生設備名增長別名的方式來達到 無論設備鏈接的順序而維持一個統一的設備名。內核一般會產生自定義的設備名 如sda1 sdb1等it

,可是udev能夠經過設備的其餘信息如總線 ,生產商等不一樣來區分不一樣的硬件設備。在/etc的 目錄下。class

例如 :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

串口綁定

相關文章
相關標籤/搜索