GPS中间驱动程序问题

GPS中间驱动程序问题,gps,serial-port,windows-mobile,Gps,Serial Port,Windows Mobile,我对GPS中间驱动程序有一些问题,我已经在我们的相机/GPS硬件中添加了一个虚拟串行端口,以暴露原始NMEA数据,现在这项工作没有问题,任何需要原始NMEA数据的应用程序都可以连接到COM8并接收它 如果涉及GPS中间驱动程序,即“设置|外部GPS”的硬件端口设置为COM8,程序端口设置为COM7。然后,当应用程序从COM7请求数据时,数据似乎不同。我只是说,当我无法检查物理输出时,会出现,请参见下面的注释A 不同之处在于,它的返回速度明显慢于直接连接到COM8,但visualGPS等应用程序在

我对GPS中间驱动程序有一些问题,我已经在我们的相机/GPS硬件中添加了一个虚拟串行端口,以暴露原始NMEA数据,现在这项工作没有问题,任何需要原始NMEA数据的应用程序都可以连接到COM8并接收它

如果涉及GPS中间驱动程序,即“设置|外部GPS”的硬件端口设置为COM8,程序端口设置为COM7。然后,当应用程序从COM7请求数据时,数据似乎不同。我只是说,当我无法检查物理输出时,会出现,请参见下面的注释A

不同之处在于,它的返回速度明显慢于直接连接到COM8,但visualGPS等应用程序在显示锁定到6颗卫星时也不会显示3D GPS定位。只有当连接到COM8时,我才会收到3D GPS修复,这对我来说意味着Microsoft软件正在更改数据,而不是简单地共享数据,从而给希望使用驱动程序跨多个应用程序共享数据的用户带来问题

任何人都知道为什么微软的中间驱动程序会给我带来这样的问题,但关于它的信息似乎很少


注A)-似乎没有WM6 professional的诊断程序可以读取COM端口或至少将流量重定向到连接到PC的COM端口。如果有人可以推荐WM6的程序来连接和查看COM端口的数据,最好是带有时间戳。或重定向通信量的程序,即从COM7读取、打开COM6并通过COM6发送数据。我可以将数据推入系统,只是我找不到任何程序会将数据推出。

更改设备数据是GPS中间驱动程序应该做的事情。它将您的应用程序与GPS设备的实现细节隔离开来,以便您的代码可以与任何GPS设备一起工作。我无法从您的问题中诊断出您所遇到的确切问题,我只能推荐。

我已经与移动设备制造商合作来诊断这个问题。他们必须使用我们的设备和操作系统的调试版本来隔离它,即使这样,问题也不是在任何一方(驱动程序与操作系统)都有一行代码。我们的读取方法没有超时,作为一个软件端口,这并不重要,但它是必需的

必须添加类似的内容

if(WaitForSingleObject(driver->GPSDataAvailableThread, driver->GPSTimeouts.ReadTotalTimeoutConstant) != WAIT_OBJECT_0)
{
   //debug message, no data to read
   return 0; //return 0 bytes read
}
//otherwise carry on a normal read operation.

即使超时为0,它也允许线程休眠,并允许其他进程继续。问题是没有它,应用程序读取COM端口的次数太多,导致中间驱动程序调用和创建互斥锁的开销。像pocketputty这样多次读取1字节数据的应用程序会导致此问题,但像副驾驶这样每秒读取1024次的卫星导航软件没有问题。

您好,我认为通过互联网诊断此问题可能很困难。我已经对文档进行了另一次阅读,它为我提供了一些想法,让我可以向驱动程序/注册表中添加其他内容,看看它是否有助于解决问题。我已经把这个问题缩小了一点。