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