abednego1979
驱动牛犊
驱动牛犊
  • 注册日期2004-02-17
  • 最后登录2009-03-27
  • 粉丝1
  • 关注1
  • 积分20分
  • 威望180点
  • 贡献值1点
  • 好评度0点
  • 原创分0分
  • 专家分0分
20楼#
发布于:2008-12-31 12:55
回abednego1979:
调用TDI是不错的方法,不过我不准备用,我想在应用程序上起一个线程定时的将虚拟串口的发送数据读取出来,然后转给网口,同时读取网络数据,送入驱动的串口接收缓冲,我觉得这样的好处是降低了驱动的复杂度,数据一旦到了应用程序中,怎么都好办了.,而且可以增加灵活性.我看见网上有公司是这样做的,他们给出软件框架图,就是这个思路.
------------------------------------------------------------------------------------------------------------------------------------
网络部分在应用层控制容易很多,是个不错的方法,我在串口方面还有些问题没有解决,如果我要在一个驱动中虚拟多个串口该怎么做呢,要求四个,我在驱动中怎么控制这四个不同的串口呢,应用层往驱动中发数据时,我要怎么区分是发给哪个串口的呢?

---------------------------------------------------------------------------------------------
我的理解,驱动是一套程序,而不同的串口是不同的设备.一个驱动对应多个设备,
实现多虚拟串口我的方法是创建设备的时候,检查尚未创建的串口,并创建,然后修改注册表,使系统可以枚举到这个串口.不同串口访问的时候,程序使用的是PDEVICE_OBJECT指针,关键的数据都在这个指针下面的扩展PDEVICE_EXTENSION中,包括收发缓存和该端口控制信息,每个串口在创建的时候都有自己的PDEVICE_OBJECT,当然也有自己的PDEVICE_EXTENSION,所以也有自己的收发缓存和端口控制信息,其实最后你只要让系统能使用你的虚拟串口了,剩下的使用那一个串口的问题就取决于你在应用层使用的是哪个COM口.
不过我声明先,这是我的理解,不一定准确.
可爱的小红
驱动牛犊
驱动牛犊
  • 注册日期2008-10-29
  • 最后登录2013-07-16
  • 粉丝0
  • 关注0
  • 积分29分
  • 威望261点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
21楼#
发布于:2009-01-04 09:07
谢谢你,我先试着写一写,肯定还会碰到很多问题,还会请教你,希望你不要烦啊,有机会请你出来吃饭。
可爱的小红
驱动牛犊
驱动牛犊
  • 注册日期2008-10-29
  • 最后登录2013-07-16
  • 粉丝0
  • 关注0
  • 积分29分
  • 威望261点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
22楼#
发布于:2009-01-04 09:10
回abednego1979:
   又想起一问题,我的串口在什么时候读数据呢,怎么知道网络中有数据过来呢,谢谢了,肯赏脸的话留个联系方式。
abednego1979
驱动牛犊
驱动牛犊
  • 注册日期2004-02-17
  • 最后登录2009-03-27
  • 粉丝1
  • 关注1
  • 积分20分
  • 威望180点
  • 贡献值1点
  • 好评度0点
  • 原创分0分
  • 专家分0分
23楼#
发布于:2009-01-04 09:28
回abednego1979:
   又想起一问题,我的串口在什么时候读数据呢,怎么知道网络中有数据过来呢,谢谢了,肯赏脸的话留个联系方式。
————————————————————————————————
看样子你没有使用过串口吧?有两种方式读取串口数据,一种是直接读取,然后查看读取到的数据量,判断是否读取到数据,另一种是设置事件掩码,当有数据到来的时候,底层通知上层,上层再取数据,保证一定读取到数据。
windows自带的超级终端属于前者,一般的串口调试工具属于后者
建议你用用windows的串口控件MSCOMM,实际用一下串口,就知道怎么回事了
可爱的小红
驱动牛犊
驱动牛犊
  • 注册日期2008-10-29
  • 最后登录2013-07-16
  • 粉丝0
  • 关注0
  • 积分29分
  • 威望261点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
24楼#
发布于:2009-01-07 11:23
abednego1979,非常感谢你的帮助
abednego1979
驱动牛犊
驱动牛犊
  • 注册日期2004-02-17
  • 最后登录2009-03-27
  • 粉丝1
  • 关注1
  • 积分20分
  • 威望180点
  • 贡献值1点
  • 好评度0点
  • 原创分0分
  • 专家分0分
25楼#
发布于:2009-01-08 09:30
不客气

前天我的虚拟串口驱动写好了,收发的数据送到应用程序里面了,在那里做了环回,在串口工具上可以自发自收了。
可爱的小红
驱动牛犊
驱动牛犊
  • 注册日期2008-10-29
  • 最后登录2013-07-16
  • 粉丝0
  • 关注0
  • 积分29分
  • 威望261点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
26楼#
发布于:2009-01-09 08:59
回abednego1979:
恭喜你,那你的工作大部分都已经做完了,这两天我和我们领导沟通了,我的驱动网络部分也必须在驱动层做,这两天在看网络这方面的资料,看不明白,网络部分的驱动是什么部骤啊,还有就是NDIS和TDI是什么关系呢,看的头都大了
abednego1979
驱动牛犊
驱动牛犊
  • 注册日期2004-02-17
  • 最后登录2009-03-27
  • 粉丝1
  • 关注1
  • 积分20分
  • 威望180点
  • 贡献值1点
  • 好评度0点
  • 原创分0分
  • 专家分0分
27楼#
发布于:2009-01-12 09:23
恭喜你,那你的工作大部分都已经做完了,这两天我和我们领导沟通了,我的驱动网络部分也必须在驱动层做,这两天在看网络这方面的资料,看不明白,网络部分的驱动是什么部骤啊,还有就是NDIS和TDI是什么关系呢,看的头都大了
--------------------------------------
可惜我没有做过TDI,只做过NDIS,ndis就是在报文上送或下发的过程中,给你提供一个识别,拦截和修改报文的机会,TDI我就不懂了,不过本论坛有个什么什么2005的串口转网络驱动,我略微看了一下,是使用TDI的,你可以看看
generalos
驱动牛犊
驱动牛犊
  • 注册日期2008-10-23
  • 最后登录2011-04-20
  • 粉丝0
  • 关注0
  • 积分63分
  • 威望477点
  • 贡献值1点
  • 好评度0点
  • 原创分0分
  • 专家分0分
28楼#
发布于:2009-01-12 11:26
用TDI CLIENT
驱网无线,快乐无限
Owen.Guo
驱动中牛
驱动中牛
  • 注册日期2001-03-30
  • 最后登录2012-03-29
  • 粉丝0
  • 关注1
  • 积分402分
  • 威望260点
  • 贡献值0点
  • 好评度26点
  • 原创分0分
  • 专家分0分
29楼#
发布于:2009-05-30 12:15
   
Owen.Guo 祝你成功!
可爱的小红
驱动牛犊
驱动牛犊
  • 注册日期2008-10-29
  • 最后登录2013-07-16
  • 粉丝0
  • 关注0
  • 积分29分
  • 威望261点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
30楼#
发布于:2011-07-21 17:12
三年后又来到了这里,那时的自己还真是有意思呀
上一页 下一页
游客

返回顶部