阅读:1802回复:9
各位,一个虚拟串口的问题,来交流一下
我现在主要是想了解,超级终端是如何读取数据的,比如我从网络上获取了数据通过应用程序传到我的虚拟串口驱动里,但是我要如何让超级终端激活 IRP_MJ_READ 事件去读这个数据,或者有其他什么方法,能让超级终端显示我传进去的数据
|
|
沙发#
发布于:2003-06-04 11:24
用DEBUGVIEW 软件可以实现。
但这样一来恐怕用不上你的虚拟串口驱动和超级终端了。 还有一种办法是给超级终端读取数据的相关函数挂上钩子,和你的程序钩起来。 |
|
|
板凳#
发布于:2003-06-04 11:37
哎!就是超级终端最烦,其实写虚拟串口主要就是要兼容他,要不然都可以不写虚拟驱动了,钩子我还不太懂呀,主要我还是不了解超级终端是怎样的流程原理,要是把真实的俩台机子连起来,一有数据他就可以显示,那它是怎么触发这个读事件的,会不会有一个没公开的事件在等待触发?
|
|
地板#
发布于:2003-06-04 17:47
你的驱动是WIN2K/XP的还是WIN98的?两者有很大区别.
你的现象似乎是系统没有识别你的虚拟串口.是安装的问题. |
|
|
地下室#
发布于:2003-06-04 17:57
我写的是2k的,应该不会系统不识别把,我已经可以用超级终端正常的打开和关闭,而且写的数据,我也可以捕捉,因为超级终端没写一下就会触发 IRP_MJ_WRITE事件,我可以把他写的数据捕捉到,但是反过来,我把数据写进去,如果是我自己写的串口通信工具,我就可以去ReadFile 读取数据,但是我不知道如何触发超级终端的读事件,我也看了些资料说是把数据写到串口的读缓存中就会自动触发读,但是不知道这个读缓存在哪? 开发虚拟串口的朋友,你们是怎么实现的?
|
|
5楼#
发布于:2003-06-04 23:33
自己写个APP, 不药用什么超级终端
|
|
6楼#
发布于:2003-06-05 08:47
哎!我也app,还在这问什么,如果都是我自己写的,连虚拟驱动都不要了,这个东西要做成产品,我总不能叫用户不用这个吧,超级终端可是串口通信最基本的需求呀,大家来帮帮忙呀,那么多写虚拟串口的朋友,给个思路吧
|
|
7楼#
发布于:2003-11-08 19:51
老兄,你的问题我也一直在调研,可却没有结果,你要是知道了,一定要告诉我,这里先谢谢了。
jipengjack@hotmail.com |
|
8楼#
发布于:2003-11-10 09:45
我写的是2k的,应该不会系统不识别把,我已经可以用超级终端正常的打开和关闭,而且写的数据,我也可以捕捉,因为超级终端没写一下就会触发 IRP_MJ_WRITE事件,我可以把他写的数据捕捉到,但是反过来,我把数据写进去,如果是我自己写的串口通信工具,我就可以去ReadFile 读取数据,但是我不知道如何触发超级终端的读事件,我也看了些资料说是把数据写到串口的读缓存中就会自动触发读,但是不知道这个读缓存在哪? 开发虚拟串口的朋友,你们是怎么实现的?
////////////////////////////////////////////////////////////////////////////////////// 我想你只是将数据写入串口缓冲区了而没有处理事件吧; 超级终端是完全事件驱动的,它采用重叠io进行读写操作,它有一个线程一直在等待io事件; 你可以看看你的事件处理部分的程序,ddk中的serial就是很好的例子。 |
|
|
9楼#
发布于:2003-11-11 08:32
串口驱动要对: SetCommMask(),WaitCommEvent()进行处理,它是串口应用程序的发动机.而且要有队列保护未完成的IRP.实际上,要对ReadFile,WriteFile,WaitCommEvent做3个LIST_ENTRY队列,保存每个IRP.
|
|