windows Mobile 软件开发入门小结

前两天回家了,闲来无事。想起某同学曾抱怨自己的windows mobile系统连看pm2.5的软件都下不到,就做了一个wm上的监视“空气质量指数”的小软件。

找不到wm的真机、之前也没接触过智能手机开发,只好全凭意念了。。

网上查了wm开发的资料,vm的应用分为托管(用.net framework)和原生(用VC)两种,没有怎么接触过VC,于是用托管吧,执行效率差一点,但是开发方便。

如下是这两天工作的小结。

[转载引用请注明原文:http://blog.csdn.net/bhq2010/article/details/8564885]

1. 安装开发环境

操作系统windows 7 sp1 32位旗舰版

需要安装的软件是Visual studio2008(我的win7装不上vs2010...)和Microsoft Virtual PC。如果需要在PC和仿真器之间同步数据的话,还需要安装Microsoft ActiveSync,但是这个在win7上貌似不太好装。

vs我装的是中文专业版

Virtual PC的下载地址是http://www.microsoft.com/en-us/download/details.aspx?id=4580

2. 设置仿真器

打开vs,菜单栏->工具->设备仿真器管理器


右击需要的仿真器,选择“连接”打开仿真器,在仿真器的菜单栏->文件->配置


在常规选项卡下的共享文件夹可以设置为win7上的一个目录,这样在仿真器中的资源管理器->sd card中就可以看到这个目录下的文件夹了。

在网络选项卡中选择“启用NE2000 PCMCIA网络适配器并绑定到”并将下面的下拉框选择到当前win7上网的那个网络或者“连接的网卡”,点击确定。

在仿真器的wm中,开始->设置->连接->网卡,在“我的网卡连接到”中选择“默认Internet设置”,在下方选择“NE2000兼容Ethernet驱动程序”设置ip和dns,一路ok,然后点击仿真器菜单栏->文件->保存状态并退出。

重新打开仿真器,应该就可以上网了,参考http://www.weste.net/2009/6-19/1527076726.html

3. 开发程序

打开vs,菜单栏->文件->新建->项目->Visual C#->智能设备->智能设备项目,之后就和开发普通的windows form程序一样了,.net framework最好选择2.0,因为高版本的在低版本的windows mobile系统中不支持。


写好后,启动调试,选择刚才配置好的那个仿真器,然后就会将开发的程序部署到仿真器中进行调试,仿真器的速度稍微有点慢。

4. http访问

在托管方式下,让wm访问http、获取站点返回的html内容并处理,可以用WebRequest,在System.Net中。示例如下:
            try
            {
                string url = urlBase + city;
                WebRequest req = WebRequest.Create(url);
                WebResponse result = req.GetResponse();
                Stream ReceiveStream = result.GetResponseStream();

                //read the stream into a string
                StreamReader sr = new StreamReader(ReceiveStream);
                sr.ReadLine();
                label_City.Text = sr.ReadLine();
                label_AQI.Text = sr.ReadLine();
                int aqi = Int32.Parse(label_AQI.Text);
                if (aqi <= 0)
                {
                    label_AQI.Text = "--";
                }
                label_AQI.ForeColor = Common.getGradeColor(aqi);
                label_Grade.Text = Common.getGrade(aqi);
                label_GradeName.Text = Common.getGradeName(aqi);
                label_PM25H.Text = sr.ReadLine();
                label_PM25D.Text = sr.ReadLine();
                int stationNum = Int32.Parse(sr.ReadLine());
                Common.stationDataList.Clear();
                while ((stationNum--) > 0)
                {
                    StationData data = new StationData();
                    data.setStationName(sr.ReadLine());
                    data.setAQI(Int32.Parse(sr.ReadLine()));
                    data.setPm25h(Double.Parse(sr.ReadLine()));
                    data.setPm25d(Double.Parse(sr.ReadLine()));
                    Common.stationDataList.Add(data);
                }
                label_MaxTemp.Text = sr.ReadLine();
                label_MinTemp.Text = sr.ReadLine();
                label_Weather.Text = sr.ReadLine();
                sr.ReadLine();
                label_Tips.Text = sr.ReadLine();
                if (result != null)
                {
                    result.Close();
                }
            }
            catch (Exception e)
            {
                MessageBox.Show("服务器暂无响应:" + e.Message);
            }

5. 在手机上使用程序

生成后,在vs工程目录下的bin/debug下的exe文件可以直接在手机上运行,如果需要可以建一个智能设备CAB工程、制作安装包,但是折腾了一下没有成功,暂时作罢。
阅读更多
个人分类: 移动/嵌入式/其他
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭