void CCheckToolDlg::ClosePort()
{
if(m_ctrlComm.GetPortOpen())
m_ctrlComm.SetPortOpen(FALSE);
}
执行上述程序时,关闭串口的操作执行不了;提示错误:只有在串口打开时,该操作才有效。void CCheckToolDlg::ClosePort()
{
m_ctrlComm.SetPortOpen(TRUE);
m_ctrlComm.SetPortOpen(FALSE);
}
执行上述程序时,提示错误:串口已经打开。这不是自相矛盾吗。我在timer事件里屏蔽了串口数据的发送,串口能够正常关闭。
出错地方是找到了,但不知道怎么改了。难道timer事件里不能用来发送串口数据吗??
解决方案 »
- 在DLL COM组件中 _Module.GetModuleInstance()返回的是谁的句柄?
- OnInitDialog函数下运行下载程序的问题
- 使用GDI+路径时遇到一个奇怪的问题,请各位帮忙解答
- vs2008d的splash screen在哪呀?找不到了,有别的方法做启动画面么?
- 初来乍道,一事相问,有关打开BMP文件
- dll中提供一个计算的函数(需要3秒),返回值前主程序‘死掉’,怎么回避处理?
- SQLConfigDataSource注册数据源
- 请问:如何在VC6.0中控制系统声音?谢谢
- 关于文件夹浏览的问题
- help me!!(a very simple problem to you)
- 如何加入帮助文件?
- 怎样得到CDialog的初始位置和大小?急
//串口正在操作的时候无法关闭。
//timer中当然可以发送数据。不过MSCOMM是异步操作的,为什么要把发送数据放到timer中去?
我也是初学,帮你顶啦
CreateFileWriteFileReadFileCloseHandle
使用Win32创建串口通讯程序http://vckbase.com/document/viewdoc/?id=1114
if(!ReadFile(pparams->hcom, pparams->lpRedBuffer, cs.cbInQue, &dwBytesRead, &ol))
{
if(GetLastError()==ERROR_IO_PENDING)
{
WaitForSingleObject(ol.hEvent, INFINITE);
bRead=GetOverlappedResult(hcom, &ol, &dwLength, TRUE);
}
}
bRead的返回值可以表示是否接收完毕,非零表示成功,零表示失败。
我用mscomm控件的。
VC开发人员都用API的吗?为什么呀?
VC开发人员都用API的吗?为什么呀?//也不是都用API。喜欢把,自由,好控制。
嗯 不错 看了下 整理比较完整 顶下
建议以后编程还是用API好,毕竟控件是封装好的,灵活度没有原函数强