daphant
驱动牛犊
驱动牛犊
  • 注册日期2001-10-17
  • 最后登录2018-05-29
  • 粉丝0
  • 关注0
  • 积分42分
  • 威望14点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
  • 社区居民
阅读:1802回复:9

各位,一个虚拟串口的问题,来交流一下

楼主#
更多 发布于:2003-06-04 11:14
我现在主要是想了解,超级终端是如何读取数据的,比如我从网络上获取了数据通过应用程序传到我的虚拟串口驱动里,但是我要如何让超级终端激活 IRP_MJ_READ 事件去读这个数据,或者有其他什么方法,能让超级终端显示我传进去的数据
lxf
lxf
驱动小牛
驱动小牛
  • 注册日期2001-03-26
  • 最后登录2013-05-04
  • 粉丝4
  • 关注0
  • 积分76分
  • 威望30点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-06-04 11:24
用DEBUGVIEW 软件可以实现。
但这样一来恐怕用不上你的虚拟串口驱动和超级终端了。

还有一种办法是给超级终端读取数据的相关函数挂上钩子,和你的程序钩起来。

别着急,慢慢来!
daphant
驱动牛犊
驱动牛犊
  • 注册日期2001-10-17
  • 最后登录2018-05-29
  • 粉丝0
  • 关注0
  • 积分42分
  • 威望14点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
  • 社区居民
板凳#
发布于:2003-06-04 11:37
哎!就是超级终端最烦,其实写虚拟串口主要就是要兼容他,要不然都可以不写虚拟驱动了,钩子我还不太懂呀,主要我还是不了解超级终端是怎样的流程原理,要是把真实的俩台机子连起来,一有数据他就可以显示,那它是怎么触发这个读事件的,会不会有一个没公开的事件在等待触发?
doomleo
驱动牛犊
驱动牛犊
  • 注册日期2001-07-27
  • 最后登录2005-12-17
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-06-04 17:47
你的驱动是WIN2K/XP的还是WIN98的?两者有很大区别.
你的现象似乎是系统没有识别你的虚拟串口.是安装的问题.
LEO
daphant
驱动牛犊
驱动牛犊
  • 注册日期2001-10-17
  • 最后登录2018-05-29
  • 粉丝0
  • 关注0
  • 积分42分
  • 威望14点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
  • 社区居民
地下室#
发布于:2003-06-04 17:57
我写的是2k的,应该不会系统不识别把,我已经可以用超级终端正常的打开和关闭,而且写的数据,我也可以捕捉,因为超级终端没写一下就会触发 IRP_MJ_WRITE事件,我可以把他写的数据捕捉到,但是反过来,我把数据写进去,如果是我自己写的串口通信工具,我就可以去ReadFile 读取数据,但是我不知道如何触发超级终端的读事件,我也看了些资料说是把数据写到串口的读缓存中就会自动触发读,但是不知道这个读缓存在哪? 开发虚拟串口的朋友,你们是怎么实现的?
bible
驱动牛犊
驱动牛犊
  • 注册日期2001-09-03
  • 最后登录2009-04-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2003-06-04 23:33
自己写个APP, 不药用什么超级终端

daphant
驱动牛犊
驱动牛犊
  • 注册日期2001-10-17
  • 最后登录2018-05-29
  • 粉丝0
  • 关注0
  • 积分42分
  • 威望14点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
  • 社区居民
6楼#
发布于:2003-06-05 08:47
哎!我也app,还在这问什么,如果都是我自己写的,连虚拟驱动都不要了,这个东西要做成产品,我总不能叫用户不用这个吧,超级终端可是串口通信最基本的需求呀,大家来帮帮忙呀,那么多写虚拟串口的朋友,给个思路吧
ji_pengyw
驱动牛犊
驱动牛犊
  • 注册日期2002-11-10
  • 最后登录2005-06-16
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2003-11-08 19:51
老兄,你的问题我也一直在调研,可却没有结果,你要是知道了,一定要告诉我,这里先谢谢了。
jipengjack@hotmail.com
jr1017
驱动牛犊
驱动牛犊
  • 注册日期2002-04-26
  • 最后登录2007-07-06
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2003-11-10 09:45
我写的是2k的,应该不会系统不识别把,我已经可以用超级终端正常的打开和关闭,而且写的数据,我也可以捕捉,因为超级终端没写一下就会触发 IRP_MJ_WRITE事件,我可以把他写的数据捕捉到,但是反过来,我把数据写进去,如果是我自己写的串口通信工具,我就可以去ReadFile 读取数据,但是我不知道如何触发超级终端的读事件,我也看了些资料说是把数据写到串口的读缓存中就会自动触发读,但是不知道这个读缓存在哪? 开发虚拟串口的朋友,你们是怎么实现的?
//////////////////////////////////////////////////////////////////////////////////////

 
我想你只是将数据写入串口缓冲区了而没有处理事件吧;
超级终端是完全事件驱动的,它采用重叠io进行读写操作,它有一个线程一直在等待io事件;
你可以看看你的事件处理部分的程序,ddk中的serial就是很好的例子。
沧海一栗
qinxg
驱动小牛
驱动小牛
  • 注册日期2002-11-15
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分37分
  • 威望27点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2003-11-11 08:32
串口驱动要对: SetCommMask(),WaitCommEvent()进行处理,它是串口应用程序的发动机.而且要有队列保护未完成的IRP.实际上,要对ReadFile,WriteFile,WaitCommEvent做3个LIST_ENTRY队列,保存每个IRP.
游客

返回顶部