阅读:1431回复:3
虚拟串口开发求助
这个项目是要做一个虚拟串口的驱动程序,和一个控制这个驱动程序(简称A)的应用程序(简称B).
数据流程大概是这样,在B中,可以随时创建和删除虚拟串口,最多可以创建256个,当虚拟串口创建好之后,其他的应用程序就可以打开该串口了(如 HANDLE hCom = CreateFile(\"com5\",....)), 当打开串口的应用程序使用WriteFile(hCom,...)时,数据先进入驱动程序,然后程序B取走数据,用 Socket送到远端指定IP和端口的程序,当程序B从Socket接受到数据后,将数据写到驱动的缓冲区,然后通知其他打开该串口的应用程序用ReadFile(hCom,...),取走数据. 整个项目就是要模拟串口的操作,虽然底层是用Socket进行通讯,但其他用户在编程时就象在使用串口,除了上述几个函数外,还可以实现其他串口操作,如等待串口消息EV_RXCHAR. 通过socket 某应用-----------驱动(A)---------应用程序(B)------------------远端进程 现在我对驱动还不是很了解,有下面的几个问题: 1,在其他的应用程序中如何通过不同的设备名称调用相同的驱动,如“COM4”,“COM5”。 2,是使用DMA的工作方式还是自己直接管理缓冲区。不知道哪种方式是合理的。 3,如何通知想从缓冲区读取数据的进程数据已到。现在考虑使用中断。(是不是使用DMA的通道,适配器,还有缓冲区,一旦缓冲区满,系统自动产生中断提示用户进程使用readfile) 4,虚拟串口NT方式的还是WDM方式的。 5,看了几个例子,都只用了一个DMABuffer,如何区分哪个是写入的数据,哪个是写出的数据。如何实现全双工通信. 6如果多个进程使用同一个串口,如何同步他们,使得数据不被破坏. |
|
|
沙发#
发布于:2003-07-23 10:55
给予强烈关注!
期待高手现身说法! 我也是卡在这个问题上。以前没有作过驱动开发,老板把任务砸下 来,只有硬着头皮上! |
|
板凳#
发布于:2003-07-24 09:08
谢谢,谢谢,你现在的项目进展到什么状况了?用的什么开发工具,我用的是DriverWorks
|
|
|
地板#
发布于:2003-08-25 11:38
最近我也在学DirverStudio,发现这东东比DDK简单很多,但是还不够熟悉,所以效率虽然高,但还不如DDK使用的方便,有机会可以多交流交流
|
|
|