WIN32API、串口、同步、WriteFile、阻塞
问题描述:
1 利用Win32 API进行串口通信,方式为同步,关键代码如下:
Dlg::Onitial()
{
//HANDLE File
hCon = CreateFile(g_ctrPort, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,NULL); //g_ctrPort为“COM1”
//设置
GetCommState(hCon,&g_dcb);
g_dcb.BaudRate=9600;
..................
..................
SetCommState(hCon,&g_dcb);
/*---------- 没有设置超时 -----------/
//设置缓冲区
SetupComm(hCon,128,128);
//开启接收线程
AfxBeginThread(RecvFromSeri,this->m_hWnd);
}
2 RecvFromSeri为一While(True)的循环,里面有WaitCommEvent(),因为与此贴主题没有多大关系(我感觉),就不贴了,如果有需要在贴
3 某单击事件响应函数:
Dlg::BnClicked()
{
................. //获得文本编辑框中的文本(即我要发送的内容)
WriteFile(hCon,buffer_send,256,&dw_send,NULL);//buffer_send为编辑框中的文本内容
}
问题来了:
一、 我设了断点,程序执行到3中的WriteFile 这一步界面线程就堵死了。
请教了
[解决办法]
SetupComm(hCon,128,128);
然后你写入的数据为256,而且我认为你在做写入的时候最好做一个同步保护,以免你的写入数据被你的读入数据修改
[解决办法]
// 如果是应答方式的通讯协议,采用同步方式的话,建议将读写放到一个线程中。
// 写完之后在等待读入。