我的程序目的:
在同步情况下测试超时参数的设置对串口读写的影响。
下面是超时结构体:
typedef struct _COMMTIMEOUTS {
DWORD ReadIntervalTimeout;
DWORD ReadTotalTimeoutMultiplier;
DWORD ReadTotalTimeoutConstant;
DWORD WriteTotalTimeoutMultiplier;
DWORD WriteTotalTimeoutConstant;
}
我在程序中对超时参数的设置如下:
ReadIntervalTimeout = 1000;
ReadTotalTimeoutMultiplier = 0;
ReadTotalTimeoutConstant = 0;
WriteTotalTimeoutMultiplier = 0;
WriteTotalTimeoutConstant = 0;我是用的自环的串口(就是串口的2 3 两根线对接的那种)
当我程序跑起来的时候,我先开启发送线程发送数据,接着开启接收线程接收数据,问题来了,当接收完数据后(即串口布在写数据了),再在一次读串口(接收数据)的时候发现程序根本不往下走了!补充一下:以上都在vc6.0下单步跑的以便能看清楚问题出在哪。可是当我把超时读参数设置如下:
ReadTotalTimeoutMultiplier = 10;
ReadTotalTimeoutConstant = 100;
ReadIntervalTimeout不用修改,当接收线程接收完数据后在一次读串口的时候发现“过了一会”就又可以往下执行了。好奇怪!我查了好多资料,都说如果把ReadTotalTimeoutMultiplier;ReadTotalTimeoutConstant ;
都设置为0那么读操作会立即返回布管有没有读完,这是怎么回事啊?跟我做的实验恰恰相反啊!
大虾们 求问啊?
在同步情况下测试超时参数的设置对串口读写的影响。
下面是超时结构体:
typedef struct _COMMTIMEOUTS {
DWORD ReadIntervalTimeout;
DWORD ReadTotalTimeoutMultiplier;
DWORD ReadTotalTimeoutConstant;
DWORD WriteTotalTimeoutMultiplier;
DWORD WriteTotalTimeoutConstant;
}
我在程序中对超时参数的设置如下:
ReadIntervalTimeout = 1000;
ReadTotalTimeoutMultiplier = 0;
ReadTotalTimeoutConstant = 0;
WriteTotalTimeoutMultiplier = 0;
WriteTotalTimeoutConstant = 0;我是用的自环的串口(就是串口的2 3 两根线对接的那种)
当我程序跑起来的时候,我先开启发送线程发送数据,接着开启接收线程接收数据,问题来了,当接收完数据后(即串口布在写数据了),再在一次读串口(接收数据)的时候发现程序根本不往下走了!补充一下:以上都在vc6.0下单步跑的以便能看清楚问题出在哪。可是当我把超时读参数设置如下:
ReadTotalTimeoutMultiplier = 10;
ReadTotalTimeoutConstant = 100;
ReadIntervalTimeout不用修改,当接收线程接收完数据后在一次读串口的时候发现“过了一会”就又可以往下执行了。好奇怪!我查了好多资料,都说如果把ReadTotalTimeoutMultiplier;ReadTotalTimeoutConstant ;
都设置为0那么读操作会立即返回布管有没有读完,这是怎么回事啊?跟我做的实验恰恰相反啊!
大虾们 求问啊?
解决方案 »
- 監控應用程式窗口的消息的DLL 有開發過HOOK的請進來幫助我吧
- CArray和CObList的区别?
- CSplitterWnd问题
- 这样做会出问题吗???
- 串口初始化问题
- @@关于多播的使用
- vc.net下cformview类的打印问题如何才能最快制作打印?打印高手请进,在线等你
- 我如何调用CMyWinApp::OnFileNew()产生其中一个View,因为我有多个view而且不像使用系统地new dialog。
- 使用SHFileOperation时,对要移动的多个文件使用了通配符“*.*”后,它老是提示无法读原文件或磁盘
- vc中如何实现列出目录中所有文件
- MFC类向导ID不见了
- http get方法返回400 Bad Request原因?
A value of zero for both the ReadTotalTimeoutMultiplier and ReadTotalTimeoutConstant members indicates that total time-outs are not used for read operations.也即是说都是0的时候就会永等在那里,直到收到足够数据
即使没读取到数据,如果的读取过程没出错也会返回TRUE
不全为0,以后再读的话就很快能过去,不用等了即便读到字节数为0!这是为什么呢!再求!