嵌入式自动判断是否插入网线的几种方法
????所以,問題的重點是如何判斷用戶是否插了網線!下面介紹四種方法,僅供參考。
方法一:
/mnt/wifi$?cat /proc/net/dev
Inter-|???Receive????????????????????????????????????????????????|?Transmit
?face |bytes???packets errs drop fifo frame compressed multicast|bytes????packets errs drop fifo colls carriercompressed
????lo:??????0???????0????0???0????0?????0?????????0?????????0????????0??????0????0????0???0?????0???????0?????????0
??eth0:????3439?????15???0???0????0?????0?????????0?????????0????????0??????0????0????0???0?????0???????0??????????0???
????在開發板上/proc/net目錄下,還有很多關于網絡的信息的文件,我試了不少,覺得這個還算準確,但并非100%哦,如果啟動開發板后,eth0 中bytes、packets 不為0,那它一定插了網線,但此種方法只適合開機啟動時判斷,之后的話,就很麻煩了。???
????獲取/proc/net/dev的信息,需要借助getline()函數和sscanf()函數。可鏈接:getline()函數
?
方法二:
???當插網線時,會打印PHY: 0:01 - Link is Up - 100/Full,拔出網線時,打印PHY: 0:01 - Link is Down,這些都由底層驅動觸發,即網線插或拔,驅動都由處理,所以,我們可以在底層發出一個信號,上層接收。使用這種方法,個人認為最為準確,而且最有效。
?
方法三:
插網線:
/mnt/wifi$?ifconfig eth0
eth0??????Link encap:Ethernet??HWaddr 06:ED:B5:C3:AA:23
??????????UP BROADCAST?RUNNING?MULTICAST??MTU:1500?Metric:1
??????????RX packets:159 errors:0 dropped:0overruns:0 frame:0
??????????TX packets:0 errors:0 dropped:0overruns:0 carrier:0
??????????collisions:0 txqueuelen:1000
??????????RX bytes:23822 (23.2 KiB)??TX bytes:0 (0.0 B)
??????????Interrupt:14
拔網線:
/mnt/wifi$?ifconfig eth0
eth0??????Link encap:Ethernet??HWaddr 06:ED:B5:C3:AA:23
??????????UP BROADCAST MULTICAST??MTU:1500?Metric:1
??????????RX packets:160 errors:0 dropped:0overruns:0 frame:0
??????????TX packets:0 errors:0 dropped:0overruns:0 carrier:0
??????????collisions:0 txqueuelen:1000
??????????RX bytes:24055 (23.4 KiB)??TX bytes:0 (0.0 B)
??????????Interrupt:14
???區別在于紅字的RUNNING。個人不太同意這種方法,如果在腳本(/etc/profile)運行,永遠沒有RUNNING,而拔掉網線時,時常打印PHY: 0:01 - Link is Up - 100/Full,PHY: 0:01 - Link is Down,而在PHY: 0:01 - Link is Up - 100/Full狀態時,ifconfig eth0是RUNNING狀態的。
????網上也有ethtoolseth0方法,我測試了一下,不準確。
?
方法四:
???1)udhcpc自動獲取eth0的ip地址,可以限制次數。
???2)ioctl獲取eth0的ip地址,如果獲取ip地址成功,則插入了網線,如果失敗,則未插入網線。
????我就是使用這種方法處理是否插入網線的,屢試不爽,最值得推薦的(僅限開機啟動時哦,因為我就是用于此時)。
總結
以上是生活随笔為你收集整理的嵌入式自动判断是否插入网线的几种方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 积分竟然比微分早了1300年!一文讲清积
- 下一篇: 安装夜深模拟器无法打开或进度条一直卡住解