主题:9287核心板wince 读IP地址的问题

  共有27429人关注过本帖    
帅哥哟,离线,有人找我吗?
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口可以看到相关打印信息。

  单帖管理 | 引用 | 回复 回到顶部

返回首页

9287核心板wince 读IP地址的问题

用户名:
            验证码: 验证码,看不清楚?请点击刷新验证码
内容: