串口编程
API Hook钩子监控
可以用HookAPI钩子函数监听 windows API来实现,你可以Hook WriteFile ReadFile就可以看到所有串口的数据了。还有IRP Hook也可以。优点是不用自己编写驱动,相对比较简单,缺点是非常占系统资源的。
过滤型驱动
优点是占用资源很少。缺点是要写一个过滤驱动,相对比较复杂。
最关键的是IoAttachDeviceToDeviceStack,过滤驱动都会调用这个
用钩子函数监听Windows底层驱动,过滤串口操作事件
虚拟串口型驱动
将一个串口映射为两个或多个的问题,这样可以同时让很多个个程序都可以共享这个串口。
参考
Faking an RS232 Serial Port,现成的COM仿真器推荐
- 在wince平台和windows平台上通用的比较著名的有两个软件。
GPSGATE,是用钩子实现的
虚拟串口VSPD(前身是SERIALSPLITTER已停止开发,另外SERIALSPLITTER有破解版的dll文件,主要就是其中那个vspd.dll文件是串口驱动。另外动态加载驱动要使用activatedevice API函数),是通过驱动的方式来实现的。
- Eterlogic http://www.eterlogic.com/Products.VSPE.html (商业的)
- Eltima http://www.eltima.com/products/vspdxp/ (商业的)
paulakg4/com0com,Com0com http://com0com.sourceforge.net/ (具有已签名的驱动程序可获得)http://code.google.com/p/powersdr-iq/downloads/list http://pete.akeo.ie/2011/07/com0com-signed-drivers.html
Windows-driver-samples/serial/VirtualSerial/, 这个VirtualSerial只会提供示例数据给COM端口, 不会读出编写的数据, 所以要自己实现逻辑。
C#串口操作系列:
http://blog.csdn.net/wuyazhe/article/category/695097 (精品,5个系列都有,感谢wuyazhe博主)
两个完整例子:
http://dldx.csdn.net/fd.php?i=35144030363803&s=210244c0411405405a6adaa4d8818c02
http://bbs.csu.edu.cn/bbs/forum.php?mod=attachment&aid=MjcyNDJ8YWYyNDFmNDd8MTMxNjg5Mzk2NXww
一篇经典论文:《基于C#环境的单片机(89C51)与PC的串行通信》(其它网站的考完都要收费,这个勉强可以看完)
http://www.doc88.com/p-78747714418.html
一些其它博客或空间的相关案例:
http://blog.csdn.net/johnpher/article/details/7003886(C#与51单片机串口通信)
http://www.cnblogs.com/wuhuacong/archive/2011/07/19/2111055.html
UDP协议的单片机通信实例: http://www.cnblogs.com/dongdonghuihui/archive/2009/09/25/1573782.html
FROM:http://www.verydemo.com/demo_c92_i47530.html