串口通信流程图
首先拷贝串口类的文件,注意是要包含消息映射WM_COMM_RXSTR和WM_COMM_RXCHAR的版本。
初始化并打开串口
使用CserialPort类中InitPort函数设置串口参数(端口号、波特率、数据位、停止位等),使用StartMonitoring函数打开串口;若顺利打开,弹出“打开”消息框,串口状态变为“打开”。
UpdateData(TRUE);
m_com.InitPort(m_hWnd,com,this->baud,'N',databit,stopbit);
m_com.StartMonitoring();
UpdateData(TRUE);
if (m_com.IsOpened())
destate.SetWindowTextW(_T("打开"));
UpdateData(FALSE);
发送数据
首先获取数据编辑框中的内容,再使用CserialPort中WriteToPort函数发送数据;
CString str,ntr;
m_send.GetWindowTextW(str);
int len = 0;
char* m_str = NULL;
CStringA strA(str);
len = strA.GetLength();
m_str = strA.GetBuffer();
m_send.SetWindowTextW('\0');
m_com.WriteToPort(m_str, len);
接收数据
在资源视图页面右键选择类向导,搜索“消息”WM_COMM_RXSTR,“添加处理程序”,cserial.cpp中建立消息映射;
Dlg.h文件中消息接收函数声明:
Dlg.cpp文件中消息接收函数:
afx_msg LRESULT CcserialDlg::OnCommRxstr(WPARAM ch, LPARAM port)
{
CString receiver;
char* tempre = (char*)ch;
int num = MultiByteToWideChar(0, 0, tempre, -1, NULL, 0);
wchar_t* wide = new wchar_t[num];
MultiByteToWideChar(0, 0, tempre, -1, wide, num);}
wide即可显示;