12000 元买了两个陀螺仪传感器,它提供的驱动程序是这样把数据传送给用户程序的:
- 调用 WindowFromPoint 获取某固定坐标对应的窗口句柄
- 使用 PostMessage 向该窗口发送大量的 Windows 消息
这样做有如下好处:
- 一条消息只能发送 64bit 的数据,一组数据需要分 4 次发送,因此在最快取样频率 100Hz 下,一秒钟要接受 400 条 Windows 消息
- 用户窗口必须放在指定的位置,并且保持可见。一旦用户窗口被其他窗口覆盖,消息就发送到不相干的窗口去了。如果该窗口恰好也有处理相应消息 ID 的程序,该窗口就会发生不可知的动作
- 无法在一台电脑上同时读取两个传感器,因为消息中没有传感器 ID,并且都发送到同一个坐标的窗口。因此为了同时读取,我还要再配备两台电脑
有什么办法处理这么疯的程序吗。也许可以开两个虚拟机,让它们在虚拟机里面向各自的用户窗口发送数据,然后用户窗口通过网络传送到虚拟机外面的接收程序?