如何知道串口有程序在通讯
我想做一个监控程序,如果串口有程序开始使用,我希望监控程序能够知道,是否有什么windows消息或机制做到这一点,谢谢 问题点数:100、回复次数:11Top
1 楼jennifergiant(希罗·尤尔)回复于 2003-08-04 08:11:24 得分 0
先up一下Top
2 楼sdudying(sdudying)回复于 2003-08-04 10:20:36 得分 0
设置一个标志,串口打开后置TRUE,你判断后就知道有没有程序在使用串口了。Top
3 楼topYellow(^_^)回复于 2003-08-05 11:55:42 得分 50
xiaoshali (小沙粒),你想知道是不是有其他程序在使用串口?可以使用CreatFile函数,如果CreatFile函数出错的话,就说明有程序在使用串口了,比如COM1端口
m_hCom = CreateFile("COM1",GENERIC_READ|GENERIC_WRITE,0,0,OPEN_EXISTING,FILE_FLAG_OVERLAPPED,0);
if(m_hCom == INVALID_HANDLE_VALUE){
AfxMessageBox("打开通讯端口错误!");
flag = true;
return FALSE;
}
如果flag == true的话,说明CreatFile函数出错,那就是有程序在使用串口了(你先得保证你的串口可用,不可用的话,CreatFile函数也会出错),至于监控可以使用TimerTop
4 楼AthlonxpX86(一坨屎)回复于 2003-08-05 22:51:54 得分 0
楼上说的对Top
5 楼xiaoshali(小沙粒)回复于 2003-08-07 20:51:39 得分 0
如果用Timer和定期使用CreatFile好像不是很好,能不能用hook把那个CreatFile函数勾起来,这样就可以不用Timer,并且实时监控性比较好,大家觉得这个想法怎么样,有没有什么问题.Top
6 楼del_c_sharp(武林中传说的摩托牛拉)回复于 2003-08-07 20:52:29 得分 0
对啊,串口是独占的,定时去打开一下串口就知道有没有程序使用它了
如果没有人使用,你别忘了close自己的占用哦Top
7 楼xiaoshali(小沙粒)回复于 2003-08-07 21:11:35 得分 0
是不是所有的串口通讯都使用CreatFile来操作,如果不是的话,那么钩子函数就不能获取所有的串口通讯,有没有人知道阿Top
8 楼topYellow(^_^)回复于 2003-08-07 22:02:28 得分 30
监视串口用不着hook,就算你用hook还不是要用到Timer,难道你让它死循环啊。
在window下,串口是当作文件来操作的,所以用CreatFile打开串口,用WriteFile发送数据,用ReadFile接受数据Top
9 楼AthlonxpX86(一坨屎)回复于 2003-08-07 22:08:44 得分 0
楼上的不懂HOOK不要乱说,APIHOOK其实是修改了要勾取的函数,一旦那个函数被调用。自己的代码也一起被调用了,所以不需要什么Timer
Top
10 楼AthlonxpX86(一坨屎)回复于 2003-08-07 22:13:58 得分 20
多数串口程序(windows)都会用到CreatFile打开串口,所以完全可以Top
11 楼topYellow(^_^)回复于 2003-08-08 09:31:14 得分 0
楼上的hook高手,你觉得xiaoshali (小沙粒)这种情况用HOOK好吗?我觉得用HOOK好象有点大才小用了^_^,还有如果用HOOK做的话,你会怎么做?如果是我的话,HOOK来截获我自己发送的消息(不会截获鼠标或键盘消息吧),所以我要用Timer定时发送消息了,所以对这个问题,我上面说的好象也没错哦。如果你有更好的办法,还望不吝赐教,先谢了Top




