个人研究成果,wxWidgets的外围通讯库基本一直处于空缺状态,经过几天的研究,将我个人的研究成果上传共享。
本库基于官方于2011年最后一次更新的libctb-0.16版本为基础修改而来,工程使用CodeBlocks创建,相较原版的变更如下。
1.去掉了ctb命名空间,之前用起来感觉有点别扭,所以去掉了,不过为了兼容性考虑,以后可能加回来。
2.IOBase、SerialPort(继承自IOBase)、GPIB(继承自IOBase)三个类修改了构造函数,原来FIFO缓冲的尺寸固定为256,我觉得波特率高时候可能不够用,现在改为通过构造函数传参由用户指定,示例程序中使用4096。
3.修正一个严重的BUG,在SerialPort基类中的OpenDedvice方法中,当串口附加参数为NULL时,类内的附加参数结构体成员将在没有被始化就被使用,进而因参数混乱而导致收发异常,这个BUG目前我已将其修复并进行了测试。
4.对Win32环境下的GetAvailablePorts函数进行重写,现在可以获取串口号超过20的串口(原来的最多到Com20),并且可以得到串口的设备名信息。
5.以上修改只在Windows下测试通过,我手头没有Linux环境,对Linux相关的代码基本是靠着意念盲改,如果您发现了有错误疏漏,欢迎指正,能帮我改改就更好了,比如Linux下如何取得串口设备名我就还没弄明白。
压缩包里有可以编译静态库的工程,以及一个基于wxWidgets3.1的演示工程,就是一个简单的串口收发器,供大家参考。
由于串口功能的实现需要依赖Windows系统API,在Windows下,如果使用Mingw编译,请改你连·请关联静态库libsetupapi.a与libwinmm.a
1