读书人

WIN32API、串口、同步、WriteFile、阻

发布时间: 2012-01-19 00:22:27 作者: rapoo

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,而且我认为你在做写入的时候最好做一个同步保护,以免你的写入数据被你的读入数据修改
[解决办法]
// 如果是应答方式的通讯协议,采用同步方式的话,建议将读写放到一个线程中。
// 写完之后在等待读入。

读书人网 >VC/MFC

热点推荐