阅读:1240回复:5
关于串口问题两问。
1、系统的串口驱动工作流程是怎么样的(比如串口外设主动发送数据给pc机,驱动如何工作)?
2、如何能够最快取得pc机的一个串口设备发送过来的数据? 谢谢了,给分! |
|
沙发#
发布于:2002-11-08 08:55
可以在中断服务例程把未请求的输入转存到一个预先定义的缓冲区,以用于以后到达的IRP_ MJ_READ请求。
在中断服务程序中处理UART的中断. |
|
|
板凳#
发布于:2002-11-08 08:57
1、外部数据到达->如果设备被调用CreateFile则FIFO中断->ISR将数据读入缓冲->如果应用发出ReadFile->将缓冲的数据传给应用。
2、方法还有用ReadFile,不过串口有个特殊的结构timeouts,这个结构直接决定ReadFile如何阻塞/返回,会直接影响ReadFile的效率。应该细看它的说明,MSDN中有详细的。还可以用WaitEvent,等待字符到达事件,可以最早知道一个外部字符已到达。 |
|
|
地板#
发布于:2002-11-08 09:42
To mimsoft:1、串口驱动的系统缓存的大小不定吗? 2、waitcommevent的时间量级能否到ms级?其他驱动能否共享该事件呢? //bow
|
|
地下室#
发布于:2002-11-08 11:50
串口缓冲大小可以改的,用DeviceIoControl,这个事件指硬件事件不是WIN32的事件对象,不可以共享的。MS级没有问题。
|
|
|
5楼#
发布于:2002-11-08 11:56
多谢了!
|
|