主题:9287核心板wince 读IP地址的问题 共有52437人关注过本帖 |
---|
![]() bingdongcha |
1楼 信息 | 搜索 | 邮箱 |
![]() ![]() ![]() ![]() |
9287核心板wince 读IP地址的问题 ![]()
需要读俩个网卡的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楼 信息 | 搜索 | 邮箱 |
![]() ![]() ![]() ![]() |
![]()
读取IP设置IP可以参考我们的SetIPDemo例程,可以写一个C的动态链接库给C#调,这样的好处是修改IP后立刻生效,如果是修改注册表,那么需要重启后生效。
C#的Registry.GetValue返回值是object型的,object型需要通过GetType来判断类型才能进行转换的,直接ToString是可能出错的。IP的表示在注册表里,MultiString和String都是合法的。 修改IP后复原应该是我们有个userinfo的配置文件里有配置IP信息,详情请参考我们光盘里的手册《使用必读》,板子在启动时会根据配置文件里的内容进行初始化配置,如果配置文件里有配置IP,那么IP自然会被重新配置。
|
单帖管理 | 引用 | 回复 ![]() |
![]() bingdongcha |
3楼 信息 | 搜索 | 邮箱 |
![]() ![]() ![]() ![]() |
![]()
对C不是太熟,我慢慢研究研究。
修改注册表IP以及重启都是在调试模式。并且新到的这批板子在nandflash下没有useinfo这个配置文件。
|
单帖管理 | 引用 | 回复 ![]() |
![]() yy |
4楼 信息 | 搜索 | 邮箱 |
![]() ![]() ![]() ![]() |
![]()
你看下sysflash下是不是有个userinfo,sysflash下的userinfo优先于nandflash下的userinfo加载。
如果不是userinfo的IP配置,那么IP是不应该会自己变动的,另外因为userinfo修改IP,你在板子DEBUG口可以看到相关打印信息。
|
单帖管理 | 引用 | 回复 ![]() |