C# 从USB GPS读取所有数据,而不是监听COM端口

C# 从USB GPS读取所有数据,而不是监听COM端口,c#,gps,serial-port,C#,Gps,Serial Port,我正在编写一个C#程序,从USB GPS记录器读取数据,当我插入它时,它就像一个新的COM端口。我已经设法编写了一些代码来侦听COM端口,并在它接收数据时触发事件,但这种方法存在一些问题: 事件监听器的速度太慢了:我每秒只得到一个结果,如果记录器上有数千条轨迹,这将永远花费时间 由于我不知道记录器包含多少数据,我如何知道何时应该停止事件侦听器而不丢失数据?我也想将所有数据写入csv文件,但由于我不知道何时停止侦听,我也不知道何时调用writer函数 我实际上不明白为什么会在COM端口上发生这种情

我正在编写一个C#程序,从USB GPS记录器读取数据,当我插入它时,它就像一个新的COM端口。我已经设法编写了一些代码来侦听COM端口,并在它接收数据时触发事件,但这种方法存在一些问题:

  • 事件监听器的速度太慢了:我每秒只得到一个结果,如果记录器上有数千条轨迹,这将永远花费时间

  • 由于我不知道记录器包含多少数据,我如何知道何时应该停止事件侦听器而不丢失数据?我也想将所有数据写入csv文件,但由于我不知道何时停止侦听,我也不知道何时调用writer函数


  • 我实际上不明白为什么会在COM端口上发生这种情况,因为记录器已经包含了我需要的所有数据?我只想一次把它全部提取出来。有没有办法做到这一点?提前谢谢

    我相信你对此无能为力。 您无法更改USB设备的行为,因为这是驱动程序问题。 它被认为是COM端口的原因可能是因为制造该设备的制造商不想处理为该设备编写驱动程序的繁琐任务

    因此,他使用了一种芯片将数据从微芯片转换为“串行通信”,以模拟RS-232通信。这更容易处理。对您来说也是如此,因为如果没有适当的文档,您可能无法读取数据或与自定义USB设备交互

    RS-232的正常波特率通常为9600。这将是最小每秒9600位。 考虑到它可能是一个8或16位的设备,这将导致每分钟1200或600个整数。 因此,根据每个结果读取的数据,我认为每秒1个结果相当慢


    希望这对您有所帮助。

    谢谢您的回答!如果我与COM端口通信,我如何知道何时读取了所有数据,并且可以停止监听?GPS设备的微芯片中也定义了这一点。如果没有任何文件,这很难说。。你可以看看设备是否不断重复同一条记录。这可能是一个很好的迹象。或者如果它只是停止发送数据。你确定当你插入它时,它没有发送当前位置吗?因为这就是我使用这些设备的经验。他们只是在收到某个命令后才开始发送日志。我使用的是canway GT-730FL-s,但我找不到多少有用的文档。记录器自带自己的软件工具,可在几秒钟内导入所有数据。所以我猜这是可以通过某种方式实现的。也许您可以为我指明一个向COM端口发送命令的方向?我对此很陌生。因为我找不到关于可能的命令的文档,有没有办法“询问”设备命令概述?