首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > Windows Mobile >

GPS开发,该如何解决

2012-01-16 
GPS开发我开发了一个通过串口(System.IO.Ports.SerialPort)获取GPS信息的程序在wm5.0/wm6.0都运行的正常,

GPS开发
我开发了一个通过串口(System.IO.Ports.SerialPort)获取GPS信息的程序在wm5.0/wm6.0都运行的正常,但今天拿了一个wm6.1的PDA就用不了(部署和直接复制过去都不行),在open的时候(COM3 4800)一直抛出IOException异常。

我用Gpsviewer、beelineGPS扫描,COM3 4800是可以用的。

这是部分代码
初始化是
  this.serialPort1.BaudRate = 4800;
  this.serialPort1.StopBits = System.IO.Ports.StopBits.One;
  this.serialPort1.DataBits = 8;
  this.serialPort1.PortName = "COM3";
  //其它属性为默认值


点“开始读取时”
  timer1.Enabled = false;
  if (serialPort1.IsOpen)
  serialPort1.Close();

  //if (!serialPort1.IsOpen) 
  // serialPort1.Open(); //在wm6.1出错位置;

  timer1.Enabled = true;


在"timer1_Tick"
  this.Text = System.DateTime.Now.ToString("HH:mm:ss");

  ////我将下面两句放在打开串口方法中,同样会出错
  if (!serialPort1.IsOpen)
  serialPort1.Open(); //在wm6.1出错位置;
   
  if (_isAddText) //_isAddText 是否把文本添加到textbox1
  textBox1.Text += serialPort1.ReadExisting();

(请不要让我用WM上面自带例子的方式去访问)

  还有一个问题是,我之前做的都是直接访问GPS的硬件端口,我用这种方式去访问GPS的程序端口时一直都访问不到数据,不知道为什么。

先谢谢各位了


[解决办法]
GPS 串口打开出错吧,检查一下这个 COM 口
[解决办法]
最近WM版块很多问GPS开发的,建议LZ搜索一下其他的帖子。
[解决办法]
是不是给另外一个程序占用了端口了,你查一下。
[解决办法]
serialPort1.Open(); //在wm6.1出错位置;

确认你其他的程序在此时没有占用这个端口,如你的gpsview,因为你直接串口编程,它是独占的。

另外,迷惑你明知wm6封装了gps获取的方法,你却不用。为什么?
[解决办法]
先查查com口对不对,com口是可以从注册表查找的,可以从下面的注册表查找(最好两个位置都查):
RegistryGetString(HKEY_LOCAL_MACHINE,
L"System\\CurrentControlSet\\GPS Intermediate Driver\\Multiplexer",
L"DriverInterface",
pszInBuffer,
MAX_PATH);
RegistryGetString(HKEY_LOCAL_MACHINE,
L"System\\CurrentControlSet\\GPS Intermediate Driver\\Drivers\\Control Panel Configured Device",
L"CommPort", 
pszInBuffer,
MAX_PATH);
[解决办法]
http://blog.csdn.net/dongdingbaihe/archive/2010/03/25/5416129.aspx
看看这个,楼主可以不通过串口进行测试程序,可以通过PC机装有Windows Mobile SDK6来测试,希望对你有用
[解决办法]
先查查com是否设置正确;

好像看到你的程序没有设置com的流控之类的属性啊~~
例如RtsEnable这些属性。


[解决办法]
if (serialPort1.IsOpen)
serialPort1.Close();

这样开串口应该说明不了问题,照楼主描述的情况,串口本身的通讯异常是可以排除的,那剩下应该就是初始化错误,要么被占用了。可怜的串口问题,一直很困扰。

关注

热点排行