动机
应用程序开发语言为C#
应用程序要求既能在PDA上运行又能在PC上运行具备良好的兼容性
应用程序要求尽可能多的兼容不同PDA上的红外线设备
net自带的SerialPort在HP某型号PDA上操作红外线设备时只能接受不能发射
目标
具备良好的兼容性既能够在PC上运行也能够在PDA上运行
挡在PDA上运行时尽可能多的兼容红外设备
局限性
单线程
仅提供send/receive模式的接口无事件驱动机制
关键技术问题及典型测试案例
最关键的是对EscapeCommFunction的调用当串口为红外设备时必须调用此函数才能确保串口工作正常当串口为一般的COM口时出于兼容性的考虑切勿调用此函数
在HP某PDA上测试时不管串口是否为红外设备均调用此函数启用红外功能均能够工作正常
在SIEMENS某PDA上测试时如果串口为一般COM接口并且调用了此函数那么串口不能正常工作屏蔽此函数后一切正常
源码
本文源代码下载Download!
补充
自定义的serialport类虽然对ir有较大的兼容性但毕竟测试范围有限不能保证对所有的设备都能够兼容因此最初的想法是对net自带的SerialPort对象调用EscapeCommFunction函数但苦于无法得到对象的Handle对象一直没有实现如果可以的话将能享受到更强大的串口功能
当然该类远未完善希望大家能够尽可能的测试并给出意见)