一、linux下訪問串列埠
1.1.2 檢視串列埠
我使用了乙個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=="1a86", attrs=="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
串列埠繫結
Linux下串列埠通訊
1.開啟串列埠 與其他的關於裝置程式設計的方法一樣,在linux下,操作 控制串列埠也是通過操作起裝置檔案進行的。在linux下,串列埠的裝置檔案是 dev ttys0或 dev ttys1等。因此要讀寫串列埠,我們首先要開啟串列埠 char dev dev ttys0 串列埠1 int fd op...
Linux下串列埠工具
gunzip cku211.tar.gz tar xvf cku211.tar rm rf cku211.tar make linux mv wermit usr local bin kermit 執行以上命令,就可以在終端上輸入kermit就可執行了。2.kermit指令碼設定 vi kermrc...
Linux下串列埠程式設計
linux下串列埠程式設計 linux 系統下,諸如串列埠 觸控螢幕 gpio adc 等等各種裝置的操作,都是 通過訪問其對應的裝置節點進行控制。相應地,串列埠通過訪問 dev ttys0 dev ttys1 dev ttys2.對其進行配置與控制。串列埠配置的引數包括 波特率,資料位,校驗位,停...