linux串口許可權
1. linux怎麼連接區域網
實現Linux下的區域網遠程接入,利用Linux伺服器的兩個串口構建撥號伺服器的方法,遠程用戶可以通過撥號連接到區域網,方便地進行信息傳遞和資源共享。
實現步驟如下:
初始化串口設備
在/etc/inittab文件中加入如下兩行,用來初始化ttyS0和ttyS1兩個串口設備:
S0:345:respawn:/sbin/mgetty -D -X 3 ttyS0
S1:345:respawn:/sbin/mgetty -D -X 3 ttyS1
然後,運行「/sbin/init q」命令使改動生效。指定認證方式
在/etc/PPP目錄下創建文件ppplogin,內容如下:
#!/bin/sh
/usr/sbin/pppd auth -chap +pap login
該文件指定用戶登錄時採用PAP認證。PAP和CHAP是PPP服務的兩種身份驗證協議。
保存文件後,給文件設置執行的許可權:
#chmod a+x /etc/ppp/ppplogin
然後,更改/etc/mgetty+sendfax/login.config文件,去掉「/AutoPPP/」一行前面的注釋,並改為如下內容:
/AutoPPP/ - - /etc/PPP/ppplogin
修改options文件
修改/etc/PPP/Options文件為如下內容;
detach
Modem
Lock
crtscts
asyncmap 0
netmask 255.255.255.0
proxyarp
ms-dns 192.168.11.1
「detach」選項非常重要。如果不指定這個選項,撥號程序就會進入後台,使得Shell腳本退出,隨之而來的是串列線路被掛斷,導致連接中止。「detach」防止了tty設備脫離PPPD的控制。
「Modem」選項使得PPPD監視DTR引線,可以觀察到對等點是否已掉線。
「Lock」選項指定在串列設備上使用UUCP風格的鎖定。
「crtscts」選項用以打開硬體握手信號。
「asyncmap 0」設置了非同步字元映射,這個映射指定控制字元不能直接通過連接發送,需要先進行轉義。
「netmask 255.255.255.0」設定PPP網路介面的網路掩碼。
「proxyarp」選項打開了ARP代理功能。
「ms-dns」2.168.11.1」指定了區域網內的DNS伺服器地址,如沒有可以不設。
給撥入用戶分配IP
創建/etc/ppp/Options.ttyS0和/etc/ppp/
options.ttyS1兩個文件,內容如下:
# Vi options.ttyS0
192.168.11.3:192.168.11.242
# Vi options.ttys1
192.168.11.3:192.168.11.243
其中,「192.168.11.3」是用作撥號伺服器的那台Linux機器的IP地址,「192.168.
11.242」和「192.168.11.243」是分別指定給COM1口和COM2口撥入用戶的IP地址。
口令驗證
編輯文件/etc/PPP/pap-secrets,內容如下:
* * "secret" 192.168.11.242
* * "password" 192.168.11.243
如上所示,每行代碼包含四列,分別代表用戶名、伺服器地址、口令值和IP地址列表。「*」表示可以與任何內容進行匹配。
用戶撥入後,如果需要訪問區域網內的其它伺服器,就必須打開IP轉發功能:
echo 1> /proc/sys/net/ipv4/ip_forward
要想在空閑一段時間後自動解除連接,需要在/etc/ppp/options中加入如下一行:
idle 600
上述代碼中,「600」表示600秒,即10分鍾。
2. linux怎麼鎖住串口,禁止其他程序使用,即禁止其他程序進行讀寫操作,即使是root用戶也不允許讀
應該是沒有這樣的辦法的。
linux系統基本上不會禁止root的許可權,即使你想辦法禁止了,也有辦法打開,除非那不是真正的root。
你應該換一個思路來解決你的問題。比如除了你的程序,沒有其他程序運行在這台電腦上,沒有其他用戶有權訪問這台電腦,不就解決了嗎?
3. Linux串口相關的操作及綁定
@ toc
可在控制台輸入
也可以用stty設置串口參數
使用後相當於串口回傳,發什麼回什麼
發送數據
可以對串口發送數據比如對com1口
一般情況下串口的名稱全部在dev下面,如果你沒有外插串口卡的話默認是dev下的ttyS* ,一般ttyS0對應com1,ttyS1對應com2,當然也不一定是必然的;
如果有ttyS設備,再看/dev/有沒有ttyS*,如沒有就建立一個:
如果板子的設備中沒有標准串口設備ttyS0,也沒有ttySAC0。/dev下應該有一個USB串口:/dev/ttyUSB0.
當一個串列卡或數據卡被偵測到時,它會被指定成為第一個可用的串列設備。通常是/dev/ttyS1(cua1)或/dev/ttyS2(cua2),這完成看原已內建的串口數目。ttyS*設備會被報告在/var/run/stab內。
PC上的串口一般是ttyS,板子上Linux的串口一般叫做ttySAC
可能是linux下的串口設備沒有打開,需要改變串口設備
的許可權,或者根據文章頭添加用戶到組處理
可以通過以下命令 查看 板子上的硬體埠的內核設備名
該條命令會將 ttyUSB0所對應的硬體埠的kernel設備名 顯現出來, 得到KERNEL== '1-5.5.4', 而不是之前的ttyUSB0
cmd.sh如下:
./getUSB.py 調用當前路徑下的getUSB.py這個Python語言,明確此次是哪個,ttyUSB0,或者ttyUSB1掛載在埠3-1.1上
getUSB.py:
完成之後 ,設置開機啟動cmd.sh(在/etc/rc.local中設置)則每次開機之後,會從/dev/ttydata獲取到固定埠的數據
方式一
寫入內容如下:
方式二
我的硬體序列號:ATTRS{serial}=="FTSYWCXZ"這個號是唯一的
可以通過/dev/usb_0打開串口設備
常用的匹配類型:
4. arm+linux平台,怎麼打開串口掛設備
ARM+linux 其實還是在linux上面對串口進行操作。
在linux中一切皆文件,所以對串口的操作就變成對文件的操作了。
串口在linux下的設備文件是tty或者是相關的名字,具體需要查閱相關手冊
然後下面對串口的操作就是對tty這個文件操作了。
打開文件 fd = open("/dev/tty",讀寫許可權);
配置串口參數,波特,奇偶校驗,停止位。(串口參數配置一定要與目標串口一致)
這里就可以對串口文件進行讀寫了。對文件的讀寫就是對串口的讀寫了