主題:9287核心板wince 讀IP地址的問題 共有42159人關注過本帖 |
---|
bingdongcha |
1樓 信息 | 搜索 | 郵箱 |
加好友 發短信 |
9287核心板wince 讀IP地址的問題 Post By:2015-8-25 16:27:00 [只看該作者]
需要讀倆個網卡的IP地址,我是這樣實現的,如下:
////////////////////////////////////////////////////////// //// 讀注冊表IP地址 string keyName; string valueName; object value = "127.0.0.1"; try { valueName = "IpAddress"; keyName = "HKEY_LOCAL_MACHINE\\Comm\\ENET1\\Parms\\TcpIP"; string Ip1_Addr = (string)Registry.GetValue(keyName, valueName, value); lab_net1ip.Text = Ip1_Addr; //string[] Ip1_Addr = (string[])Registry.GetValue(keyName, valueName, value); //lip = IPAddress.Parse(Ip1_Addr[0].ToString()); // IP地址是Multi Line 類型 keyName = "HKEY_LOCAL_MACHINE\\Comm\\ENET2\\Parms\\TcpIP"; string Ip2_Addr = (string)Registry.GetValue(keyName, valueName, value); lab_net2ip.Text = Ip2_Addr; // IP地址是Sting 類型 valueName = "DefaultGateWay"; keyName = "HKEY_LOCAL_MACHINE\\Comm\\ENET1\\Parms\\TcpIP"; string Ip1_Gateway = (string)Registry.GetValue(keyName, valueName, value); lab_net1gate.Text = Ip1_Gateway; keyName = "HKEY_LOCAL_MACHINE\\Comm\\ENET2\\Parms\\TcpIP"; string Ip2_Gateway = (string)Registry.GetValue(keyName, valueName, value); lab_net2gate.Text = Ip2_Gateway; valueName = "Subnetmask"; keyName = "HKEY_LOCAL_MACHINE\\Comm\\ENET1\\Parms\\TcpIP"; string Ip1_mask = (string)Registry.GetValue(keyName, valueName, value); lab_net1mask.Text = Ip1_mask; keyName = "HKEY_LOCAL_MACHINE\\Comm\\ENET2\\Parms\\TcpIP"; string Ip2_mask = (string)Registry.GetValue(keyName, valueName, value); lab_net2mask.Text = Ip2_mask; } catch (Exception ex) { Console.WriteLine(ex.Message); } /////////////////////////////////////////////////////////////////////////////// 可是我有10幾個9287的核心板,注冊表中相應的位置有的是Multi Line,有的是 String。 Multi Line 對應是數組。String對應的是字符串。板子不一樣程序會報錯。 這個應該怎么處理,或者有什么其他的方法把IP顯示到窗體????? 還有一個問題,在注冊表中修改IP地址,設備重啟后,IP地址又復原了,沒有修改成功????? [此貼子已經被作者于2015-8-25 16:39:45編輯過]
|
單帖管理 | 引用 | 回復 |
yy |
2樓 信息 | 搜索 | 郵箱 |
加好友 發短信 |
Post By:2015-8-25 17:58:00 [只看該作者]
讀取IP設置IP可以參考我們的SetIPDemo例程,可以寫一個C的動態鏈接庫給C#調,這樣的好處是修改IP后立刻生效,如果是修改注冊表,那么需要重啟后生效。
C#的Registry.GetValue返回值是object型的,object型需要通過GetType來判斷類型才能進行轉換的,直接ToString是可能出錯的。IP的表示在注冊表里,MultiString和String都是合法的。 修改IP后復原應該是我們有個userinfo的配置文件里有配置IP信息,詳情請參考我們光盤里的手冊《使用必讀》,板子在啟動時會根據配置文件里的內容進行初始化配置,如果配置文件里有配置IP,那么IP自然會被重新配置。
|
單帖管理 | 引用 | 回復 |
bingdongcha |
3樓 信息 | 搜索 | 郵箱 |
加好友 發短信 |
Post By:2015-8-25 20:02:00 [只看該作者]
對C不是太熟,我慢慢研究研究。
修改注冊表IP以及重啟都是在調試模式。并且新到的這批板子在nandflash下沒有useinfo這個配置文件。
|
單帖管理 | 引用 | 回復 |
yy |
4樓 信息 | 搜索 | 郵箱 |
加好友 發短信 |
Post By:2015-8-27 9:47:00 [只看該作者]
你看下sysflash下是不是有個userinfo,sysflash下的userinfo優先于nandflash下的userinfo加載。
如果不是userinfo的IP配置,那么IP是不應該會自己變動的,另外因為userinfo修改IP,你在板子DEBUG口可以看到相關打印信息。
|
單帖管理 | 引用 | 回復 |