2023.06.08 关于COM口串口通信的一点反思

突然我发现我对事情的认知程度其实只能保证在我了解的范围之内是正确的,如果超出了我认知程度的内容,我会对里面的细节进行脑部,从而产生错误的判断。也就是说模糊概念的置信区间需要做一个降权处理。

下午调试基于COM口的串口通信,我之前所接触的串口通信全部是通过USB协议转接出来的,很久之前有考虑过对于串口通信如何封装,最后通过Win32接口,实现了自动插拔识别。

但是我没有考虑到原生COM的情况,我原来的实现逻辑是通过usb在拔插的时候,串口会消失,同时注册表里这个串口也会没有,C#的DLL中也会有一个属性是检测串口是否打开,通过轮询实现的。

但是在原生COM的情况下,会出现,设备拔插了,但是没有任何提示的事情。

除非通过轮询查询指令,或者是心跳来检测在线。

因为COM口基本已经被淘汰了,基于原生COM开发的程序,也比较罕见,我之前调试的时候,也无从见过这种情况,所以产生的错误的判断。

不过基于此,也让我对串口的打开与发送有了更深了了解。

总结一下,原来的逻辑没有问题,但是仅在设备串口不是原生COM串口的情况下生效.

整体的设计概念不变,但是需要把轮询系统消息,更改为轮询指令才可以。

毕竟自动插拔识别的功能很实用。