我必须创建虚拟com端口,通过它我可以与机器上的其他com端口进行通信,它是设备驱动程序开发的一部分吗?或者只是我们可以用c ++编写。
任何人都可以帮助我 提前谢谢。
答案 0 :(得分:10)
您必须编写驱动程序,因此您需要安装WDK(以前称为DDK)。但是你很幸运,因为Windows Driver Kit Samples Pack包含一个虚拟串口样本。
您似乎想要一个'translater'与设备通信,为什么不简单地编写一个过滤器驱动程序并实现一些额外的IOControls?
如果您真的想从驱动程序中访问其他端口(我已经执行过一次),您应该查找以下功能:
IoGetDeviceObjectPointer
/ ObDereferenceObject
(用于打开/关闭端口)IoBuildDeviceIoControlRequest
/ IoCallDriver
(用于发送IOCTL以更改端口设置)IoBuildSynchronousFsdRequest
/ IoCallDriver
(用于撰写/阅读数据)您需要的结构/ IOCTL:
SERIAL_BAUD_RATE
(适用于IOCTL_SERIAL_SET_BAUD_RATE
/ IOCTL_SERIAL_GET_BAUD_RATE
)IOCTL_SERIAL_SET_TIMEOUTS
SERIAL_HANDFLOW
(适用于IOCTL_SERIAL_SET_HANDFLOW
/ IOCTL_SERIAL_GET_HANDFLOW
)SERIAL_LINE_CONTROL
(适用于IOCTL_SERIAL_SET_LINE_CONTROL
)IOCTL_SERIAL_PURGE
IOCTL_SERIAL_SET_WAIT_MASK
/ IOCTL_SERIAL_GET_WAIT_MASK
IOCTL_SERIAL_SET_CHARS
/ IOCTL_SERIAL_GET_CHARS
IOCTL_SERIAL_WAIT_ON_MASK
可以找到控制请求的完整概述here
祝你旅途愉快:)
答案 1 :(得分:5)
我假设您在Windows环境中询问此问题,因为您使用winapi进行了标记。
是的,您需要为此编写虚拟驱动程序。好消息是,DDK(现在称为WDK)可以从MS免费获得。如果您没有VS2013(WDK的8.1版本所需),您可以从MS网站免费获得Express Edition。
编辑:您可能需要查看此内容 - http://com0com.sourceforge.net/。从描述:
Null-modem仿真器是一个开源内核模式虚拟串行端口 Windows驱动程序,可在GPL许可下免费获得。 的
的Null-modem仿真器允许您创建无限数量的虚拟COM端口对,并使用任何一对将一个基于COM端口的应用程序连接到另一个。每个COM端口对提供两个COM端口。一个端口的输出是来自其他端口的输入,反之亦然。 的
听起来它可能正是你正在寻找的东西。