• PUDN用户
    了解作者
  • C++
    开发工具
  • 776KB
    文件大小
  • rar
    文件格式
  • 0
    收藏次数
  • 10 积分
    下载积分
  • 1099
    下载次数
  • 2005-07-30 16:29
    上传日期
好东东,虚拟串口驱动程序,里面含有相关 串口监视界面。
虚拟串口驱动程序.rar
  • VSer
  • inf
  • objfre_wxp_x86
  • VSer.CAT
    0B
  • VSer.inf
    1.6KB
  • VSer.sys
    11.8KB
  • objfre_w2k_x86
  • VSer.CAT
    0B
  • VSer.inf
    1.6KB
  • VSer.sys
    11.8KB
  • Enum.exe
    33.5KB
  • Test.exe
    32KB
  • sys
  • ioctl.c
    21.3KB
  • WDMSample.dsw
    541B
  • wmi.c
    15.4KB
  • MAKEFILE
    271B
  • readwrite.c
    6.4KB
  • TDIClient.h
    2.7KB
  • WDMSample.plg
    1.5KB
  • pnp.c
    17.5KB
  • SampleRW.c
    0B
  • sources
    211B
  • main.c
    19KB
  • Dispatch.c
    3.3KB
  • WDMSample.dsp
    4.8KB
  • TDIClient.c
    32.3KB
  • main.h
    9KB
  • sample.rc
    926B
  • inc
  • wdmioctl.h
    1.6KB
  • exe
  • Test.plg
    1KB
  • Test.dsw
    531B
  • Test.dsp
    4.3KB
  • test.h
    1KB
  • Test.C
    10.7KB
  • ReadMe.txt
    1.2KB
  • others
  • commaster
  • ComMaster.exe
    332KB
  • Readme.txt
    1.8KB
  • ComMaster.chm
    268.8KB
  • readme.txt
    683B
  • sockUDP.exe
    32KB
  • tdisamp.rar
    212.1KB
  • TDIClient.zip
    79.3KB
  • log&Debug
  • busdriver
  • BusEnum.sys
    23KB
  • bus.inf
    1.6KB
  • toaster.cat
    174B
  • readme.txt
    7.1KB
  • www.pudn.com.txt
    218B
内容介绍
虚拟串口设备驱动 Virtual Serial Device Driver 2005.2.20 Windows2K下虚拟串口设备驱动程序及相关应用程序 内容列表 =========== 主要功能 使用说明 各模块说明 工作机制 更新和改进 不足之处 跟我联系 主要功能 =========== 在Windows2K操作系统上虚拟出若干串口设备,这些虚拟串口设备作为 TDI Client 将串口应用程序(比如超级终端)读写串口设备的操作通过网络的方式传递到远端,即将应用程序写入的数据以UDP协议发送到远端目标机器的指定端口;监听本机指定端口,将所有在此端口收到的UDP报文数据提交给应用程序。 1. 在操作系统中,虚拟出若干串口。可以使用串口工具(比如操作系统自带的超级终端软件)对串口进行打开、发送、接收、关闭等操作。 2. 由于是虚拟串口,所以可以设置任意波特率、数据位、奇偶校验、停止位等端口操作。 3. 虚拟串口创建以后,打开本机的6001端口,设置接收回调函数用于接收此端口上的数据。应用程序写入虚拟串口的数据则直接发送到远端指定IP地址和端口。 使用说明 =========== 1. 安装busdriver目录中提供的toaster总线驱动程序:BusEnum.sys。安装步骤详见DDK的toaster\bus例子。 2. 控制台上运行enum -p 1,对新的硬件设备指定 inf目录,安装inf目录中提供的本虚拟串口驱动程序。安装完毕以后在“设备管理器”的"端口(COM和LPT)"中应该多出新的设备。enum程序由DDK的toaster\exe\enum例子编译。只是改动了toaster\inc\public.h中的#define BUS_HARDWARE_IDS L"Toaster\\MsToaster\0" 3. 控制台上运行test.exe,创建/删除虚拟串口设备的DOS名,设定远端目标机器的IP地址和端口。 4. 卸载设备可以在控制台上运行 enum -u 1,此操作代表强行拔出设备。另一个方法是点击桌面右下角系统托盘中的“拔下或弹出硬件”图标来停止设备的工作。 6. 更新驱动程序时,只需要将所有的虚拟串口卸载,然后再编译驱动程序,build -ceZ,而后将编译后的.sys文件拷贝到system32\drivers目录即可。 注意事项 ------- 1. 本项目中所有编译后的驱动和应用程序都在inf目录下。在Win2K(sp4)平台上测试的较多,在Xp(sp2)平台上作过简单测试。没有在多CPU下进行测试。由于Win98下串口的结构跟Win2k以后差别较大,所以本程序不能在Win98下使用。 2. 简单起见,绑定本机端口这一步没有做成动态的。只是用一个静态变量从6001开始累加来指定本机端口。创建多个虚拟串口设备的时候,每一个虚拟串口设备依次绑定本机6001,6002,6003等以后端口。因此远端UDP发送程序可以分别对这些端口发送数据来进行测试。 3. 发送到远端的指定端口,这一步可以动态实现,即通过test程序给每一个虚拟串口设备指定端口。 4. 编译win2K和Xp平台下的驱动程序应该采用相应的编译环境。在Win2000编译环境下编译的.sys文件在Xp+sp2下可能有点小问题。反之没有做过测试。 各模块说明 =========== busdriver toaster总线的安装文件,包括inf文件和 .sys文件 exe 串口应用程序,控制虚拟串口设备。参考其目录的说明.txt inc application 和 sys都要用到的若干宏定义和其他 inf 最终安装所需要的.inf .sys 和应用程序 log&debug 开发日志,说明文档 others 开发辅助软件,例子和测试工具。 sys WDM类型的驱动程序,虚拟串口驱动程序的主体 工作机制 =========== 虚拟设备的创建 ---------------- 跟商业软件Virtual Serial Ports Driver XP3类似。 首先利用DDK的toaster bus例子安装toaser bus总线,然后利用该总线驱动程序生成一个(或几个)虚拟PDO。对这些虚拟的PDO,加载这个虚拟串口驱动程序。 注意:toaster bus driver安装以后不会自动生成虚拟设备PDO,需要运行相应的enum程序。 “enum -p 1“会生成一个新的虚拟设备。该设备的Hardware ID基于NTDDK\src\general\toaster\inc\public.h里的#define BUS_HARDWARE_IDS L"Toaster\\MsToaster\0"的定义。这个Hardware ID和我们的虚拟串口驱动程序inf文件(MySerial.inf)里边指定的Hardware ID必须一致。否则安装本驱动程序的时候,会提示“未发现相关的硬件信息”。 多个虚拟设备的创建: 在AddDevice中设置静态变量,每次虚拟设备创建、加载驱动程序都会调用该函数。该静态变量累加。生成的FDO的名字由\Device\Serial11开始递增 每一个虚拟设备都可以采用1~255之间没有被占用的数字来动态的生成DOS名,即COMn。 具体操作参考exe目录下的readme.txt 读写方法 ---------------- 1. 读数据采用缓冲区方式 设备在启动时打开本机UDP协议的6001端口,设置接收回调函数将该端口上收到的所有数据拷贝到接收缓冲区。接收缓冲区是一个环形缓冲区,保存接收到的最新数据。应用程序若不及时读取,数据可能会被最近接收到的数据所刷新。 2. 写数据采用直接发送方式 应用程序向设备写的数据直接以UDP协议发送到之前设定的远端IP地址和端口上。此过程为阻塞式。不同于读数据方式,没有专门为写数据设置缓冲区。 串口相关DeviceIoContrl的处理 ---------------- 着重处理 IOCTL_SERIAL_GET_COMMSTATUS IOCTL_SERIAL_GET_WAIT_MASK IOCTL_SERIAL_SET_WAIT_MASK IOCTL_SERIAL_WAIT_ON_MASK IOCTL_SERIAL_PURGE 简单处理 IOCTL_SERIAL_SET_BAUD_RATE IOCTL_SERIAL_GET_BAUD_RATE IOCTL_SERIAL_SET_LINE_CONTROL IOCTL_SERIAL_GET_LINE_CONTROL IOCTL_SERIAL_SET_TIMEOUTS IOCTL_SERIAL_GET_TIMEOUTS IOCTL_SERIAL_SET_CHARS IOCTL_SERIAL_GET_CHARS IOCTL_SERIAL_SET_QUEUE_SIZE IOCTL_SERIAL_GET_HANDFLOW IOCTL_SERIAL_SET_HANDFLOW 其余IOCTL则直接返回 IOCTL_SERIAL_GET_COMMSTATUS 返回CommsPorts的状态,即deviceExtension->SerialStatus。应用程序根据这里边的AmountInInQueue和AmountInOutQueue来判断是否有接收/发送缓冲区里边是否有数据。 IOCTL_SERIAL_GET_WAIT_MASK 返回驱动当前等待的Mask,返回值应该与上一次Set_Wait_Mask保持一致 IOCTL_SERIAL_SET_WAIT_MASK 设置驱动应该等待的Mask。此时驱动应该取消以前Pending的ReadIrp和WaitOnMaskIrp。 IOCTL_SERIAL_WAIT_ON_MASK 根据当前的WaitMask来判断,当设备出现WaitMask上的事件应该返回该Irp;若没有WaitMask上的事件发生,则IoMarkIrpPending,返回Status_Pending。以后某个时间出现WaitMask事件以后再返回该Irp IOCTL_SERIAL_PURGE 取消指定的Rx/Tx的Irp。 更新和改进 ============= 1、摒弃了上一版本的双串口互连的实现。本版本将虚拟串口设备作为TDI Client通过网络与远端进行数据交换。网络通信中采用的是UDP协议,所以不能保证数据传输的可靠性和顺序性。若对上述性能有要求,可以采用TCP协议建立一个 Connection-Oriented 连接。具体实现请参考DDK文档。 2、串口设备的枚举,虚拟串口设备的DosName的创建和删除,远端目标机器的IP地址和端口,目前均由DeviceIoControl来负责控制。因此enum -p 1创建虚拟串口设备以后,若不运行test.exe文件,很多串口应用程序可能无法找到该虚拟串口设备。关于test.exe的使用参考相应目录下的文档。 3、较上一版本,本次对串口相关的DeviceIoContrl进行了更多的处理,主要是如下 IOCTL_SERIAL_GET_COMMSTATUS,IOCTL_SERIAL_GET_WAIT_MASK,IOCTL_SERIAL_SET_WAIT_MASK,IOCTL_SERIAL_WAIT_ON_MASK,IOCTL_SERIAL_PURGE,IOCTL_SERIAL_SET_TIMEOUTS。 4、在读数据中,若当前缓冲区里边没有数据,则设定一个DPC,启动定时器。根据IOCTL_SERIAL_SET_TIMEOUTS设定的超时值作简单的超时处理。 5、对于如何将设备出现在“拔出或弹出硬件”对话框里边(如同U盘一样),可参考PnpQueryCapabilities函数的实现。 6、TDI的相关操作均在TDIClient.c文件中。这部分主要参考的代码是TDIClient和TDISample两个项目。 不足之处 ============= 1. 对于多线程应用程序读写虚拟串口的情况,支持的不够好。鉴于目前大部分串口应用程序都是采用单线程读写设备,所以实际中影响不大。 2. 串口的超时处理比较简单。 3. 网络TDI Client方面,仅实现了UDP的无连接服务,网络通信质量不高。目前设备启动后就固定的监听某一端口,该端口是硬编码到驱动程序里边,不够灵活。 跟我联系 ============= 自从上一版虚拟串口程序发布以后,一年以来陆续的收到了很多网友的来信。有鼓励的,有报告bug的,还有很多提出设计思路的。总计不下30余人,这里一并表示感谢! 作为一个虚拟串口设备驱动,本身没有太多的应用场合,称之为“玩具软件”还算比较恰当。所实现的功能基本上属于演示性质的。串口部分对上一版进行了一些完善,TDI Client部分则基本上是从others下提供的TDI Sample等代码中略加修改移植过来。所以对于驱动开发的新手来说还算有点参考价值。对于中高手而言,不如直接看others下的源代码更有收获。 新年伊始,最后祝大家鸡年大吉,身体健康,工作顺利! Email: bitee@163.com (sohu的邮箱不稳定,改用163的了。) acidfish@DriverDevelop.com
评论
  • sk010101 2018-05-31 21:18:41
    缺少驱动sys,功能不全
  • PUDN用户 2006-01-19 09:57:05
    duplciated?
  • PUDN用户 2006-01-12 11:28:27
    source code good
相关推荐
  • 虚拟串口驱动程序.rar
    虚拟串口驱动程序 虚拟串口的驱动程序 源码
  • 意科USB虚拟串口驱动.zip
    CH430驱动程序,USB驱动程序,单片机串口
  • windows虚拟串口驱动程序例程
    一个虚拟串口驱动,可以通过超级终端等访问,本程序作为示例使用,发送AT/ATA/ATD等会自动返回信息
  • STM32 USB虚拟串口驱动
    STM32 USB虚拟串口驱动............................................................................................
  • 虚拟串口win7驱动
    STM32,NXPusb用作虚拟串口时,驱动文件,支持xp以及win7.
  • 虚拟串口驱动
    在很多应用环境中,终端设备的管理、通信等接口普遍为 RS-232、RS-485或RS-422接口方式,这些...RS-232/485/422串口服务器设备,这样既能够方便的解决串口终端设 备的网络通信问题,又极大程度的保护了用户的原有投资。
  • 虚拟串口驱动
    proteus进行串口通信时,此软件可以蓄力串口串口调试助手进行实际通信
  • stm32虚拟串口VCP驱动
    stm32 USB虚拟串口驱动 全系列兼容。 Virtual COM port driver installation package for Windows® operating systems: 98SE, 2000, XP, Vista®, 7, and 8.x
  • 虚拟串口驱动
    1.在操作系统中,虚拟出若干串口。可以使用串口工具(比如操作系统自带的超级终端软件)对串口进行...2. 由于是虚拟串口,所以可以设置任意波特率、数据位、奇偶校验、停止位等端口操作。 3. 通过协议传送、接收数据。
  • 虚拟串口vuart驱动
    基于linux-4.9内核的tty模拟驱动。无需串口芯片。ubuntu/嵌入式linux系统上均可运行。