我做了个线程主要功能是:先判断串口是否打开,如果打开就关闭,然后再打开口,再然后配置串口,再进收发工做。在用USB转串口线的时候一切正常,但如果是台式机上自带的串口,关闭串口的时候,会占用大量时间,大概十多分钟。
请教大家这个问题怎么处理啊。
我关闭串口是用CloseHandle函数。
请教大家这个问题怎么处理啊。
我关闭串口是用CloseHandle函数。
解决方案 »
- 可以这样写吗?if(WM_WTSSESSION_CHANGE) exit(1);
- 辞职了,散分
- 关于数字字母转换为ASCII码并进行截取
- 我把一个功能用DLL封装了,该DLL文件是经过专业软件加密了的.注册用户可以使用该功能,没注册用户只能试用几天.该怎样做呢?
- 如何将应用程序的默认图标替换为truecolor的?
- 能实现带参数的合成代码的宏吗?
- 紧急(十万火急)!!!!!!!!!!!!!!!!!!!!(关于进制转换问题)
- 请教一些socket原始套接字的问题
- 如何捕捉Edit的KeyDown或KeyPress消息?(现在没分了,日后补上)
- 如何把GDI标注与图像一起保存为位图?
- MFC中有关SHBrowseForFolder(&bi)不弹出路径选择框的问题
- 问一个关于聊天窗口显示图片的问题:如何向CRichEditCtrl中插入bmp、jpg等格式的图片
UINT CSfdDlg::ThreadCom(LPVOID pParam)
{
CSfdDlg * pDlg=(CSfdDlg *)pParam;
HANDLE hCom;
hCom=INVALID_HANDLE_VALUE;
while (1)
{
if (hCom !=INVALID_HANDLE_VALUE)
{
::CloseHandle(hCom);
}
hCom=CreateFile("COM1",//COM1口
GENERIC_READ|GENERIC_WRITE, //允许读和写
0, //独占方式
NULL,
OPEN_EXISTING,
FILE_FLAG_OVERLAPPED,
NULL);
if(hCom==(HANDLE)-1)
{
AfxMessageBox("打开COM失败!");
}
}}
这是干啥呢...
不要保存在临时变量,保存成一个全局变量.
打开com只需一次,程序需要关闭串口的时候closehandle之前保存的全局句柄就可以了.楼主你可以下一个网上封装好的串口类,先看看别人的代码,再自己尝试封装一个,以后就很熟练了.有一本书叫<Visual C++/Turbo C 串口通信编程实践>,下个电子版的看看