当前位置: 首页 > news >正文

制作一个网站需要什么九江seo

制作一个网站需要什么,九江seo,毕业论文的网站做,做建筑机械网站那个网站好虚拟串口设备驱动,虚拟串口的完整源代码,包括注释和开发日志。据说市值5万人民币! Virtual Serial Device Driver Windows2K下虚拟串口设备驱动程序及相关应用程序内容列表 主要功能 使用说明 各模块说明 工作机制 更新和改进 不足之处 跟我联系主要功能…

虚拟串口设备驱动,虚拟串口的完整源代码,包括注释和开发日志。据说市值5万人民币!

Virtual Serial Device Driver

Windows2K下虚拟串口设备驱动程序及相关应用程序内容列表

===========主要功能

使用说明

各模块说明

工作机制

更新和改进

不足之处

跟我联系主要功能

===========在Windows2K操作系统上虚拟出若干串口设备,这些虚拟串口设备作为 TDI Client 将串口应用程序(比如超级终端)读写串口设备的操作通过网络的方式传递到远端,即将应用程序写入的数据以UDP协议发送到远端目标机器的指定端口;监听本机指定端口,将所有在此端口收到的UDP报文数据提交给应用程序。1. 在操作系统中,虚拟出若干串口。可以使用串口工具(比如操作系统自带的超级终端软件)对串口进行打开、发送、接收、关闭等操作。

2. 由于是虚拟串口,所以可以设置任意波特率、数据位、奇偶校验、停止位等端口操作。

3. 虚拟串口创建以后,打开本机的6001端口,设置接收回调函数用于接收此端口上的数据。应用程序写入虚拟串口的数据则直接发送到远端指定IP地址和端口。

使用说明

===========1. 安装busdriver目录中提供的toaster总线驱动程序:BusEnum.sys。安装步骤详见DDK的toasterbus例子。

2. 控制台上运行enum -p 1,对新的硬件设备指定 inf目录,安装inf目录中提供的本虚拟串口驱动程序。安装完毕以后在“设备管理器”的"端口(COM和LPT)"中应该多出新的设备。enum程序由DDK的toasterexeenum例子编译。只是改动了toasterincpublic.h中的#define BUS_HARDWARE_IDS L"ToasterMsToaster"

3. 控制台上运行test.exe,创建/删除虚拟串口设备的DOS名,设定远端目标机器的IP地址和端口。

4. 卸载设备可以在控制台上运行 enum -u 1,此操作代表强行拔出设备。另一个方法是点击桌面右下角系统托盘中的“拔下或弹出硬件”图标来停止设备的工作。

6. 更新驱动程序时,只需要将所有的虚拟串口卸载,然后再编译驱动程序,build -ceZ,而后将编译后的.sys文件拷贝到system32drivers目录即可。

虚拟串口设备驱动完整源代码内附测试工具注意事项

-------

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基于NTDDKsrcgeneraltoasterincpublic.h里的#define BUS_HARDWARE_IDS L"ToasterMsToaster"的定义。这个Hardware ID和我们的虚拟串口驱动程序inf文件(MySerial.inf)里边指定的Hardware ID必须一致。否则安装本驱动程序的时候,会提示“未发现相关的硬件信息”。多个虚拟设备的创建:

在AddDevice中设置静态变量,每次虚拟设备创建、加载驱动程序都会调用该函数。该静态变量累加。生成的FDO的名字由DeviceSerial11开始递增

每一个虚拟设备都可以采用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下的源代码更有收获。

http://www.dinnco.com/news/28348.html

相关文章:

  • 八宝山做网站的公司市场调研报告
  • 网站建设加盟新闻软文怎么写
  • 响应式网站概况搜索引擎推广方法
  • 专做定制网站建设网络运营培训课程
  • 学校做网站及费用网络推广外包公司干什么的
  • 做ppt设计师哪个网站好专业seo公司
  • 邳州哪家做百度推广网站seo百度关键词优化软件
  • 北京网站提升排名品牌策略怎么写
  • 宁波公司网站建设定制服务常见网络营销推广方法
  • 怎么做动漫网站网上做广告怎么收费
  • 做网页用的网站信息流优化师工作内容
  • 可以做动漫的网站有哪些如何自己做一个网址
  • 大网站制作公司公司网站模板
  • 如何做网站程序新乡百度关键词优化外包
  • 开发网站用什么语言最好吗电脑上突然出现windows优化大师
  • 外国语学院英文网站建设seo哪个软件好
  • 杭州 网站建设公司排名百度搜索关键词规则
  • dell网站的设计特色联合早报 即时消息
  • 酒店家具网站源码爱站网查询
  • 北京好网站制作公司哪家好汕头网站设计公司
  • 连云港网站制作品牌营销策划ppt
  • 自己做的网站能放到阿里云上博客
  • 商城形式的网站需要多少钱好的竞价推广托管
  • 昆明做百度网站电话百度关键词工具入口
  • 网站页面制作公司江苏做网站的公司有哪些
  • 什么是做学院网站品牌seo推广咨询
  • w网站开发文献网络销售技巧和话术
  • 哪里可以做网站推广网络推广方法有几种
  • 网站被抓取新媒体培训
  • 网络营销策划的目的本地网络seo公司