我是基于对话框的mfc。在主对话框里添加菜单,单击一个菜单项弹出对应功能的对画框,在其中一个对话框添加的MSComm控件,编写了串口通信命令。现在想在其他对话框里也使用串口通信,要如何做呢?(每一个对话框新生一个类)
不知道你这个问题是否已经解决, 如果还没有解决的话:①注意:如果报错
则:将LONG改为LRESULT
①头文件中:
afx_msg LONG OnComm(WPARAM ch,LPARAM port);//自己手动添加的一个消息处理函数:为了有消息给MFC发送后,MFC有变化
//afx_msg LRESULT OnComm(WPARAM ch,LPARAM port);//LONG报错就使用LRESULT,自己手动添加的一个消息处理函数,为了有消息给MFC发送后,MFC有变化
②源文件中:
ON_MESSAGE(WM_COMM_RXCHAR,OnComm)
//使用配置文件中的:自定义输入串口信息长度
//LRESULT CFlashAndVideoDlg::OnComm(WPARAM ch,LPARAM port)//LONG报错就使用LRESULT,自己手动添加的一个消息处理函数,为了有消息给MFC发送后,MFC有变化
LONG CFlashAndVideoDlg::OnComm(WPARAM ch,LPARAM port)
{
int length=comMessageLength;
str += ch;
if (str.length()>=length)
{
int index= str.length() - length;
if (str[index] == 0x55 && str[index+1] == ( char )0xaa )
{
std::string pp = str.substr(index, length);
m_SerialPortsend.WriteToPort((char *)pp.c_str(),length);
char * tempstr = const_cast<char*>(pp.c_str());
std::string showstr;
for (unsigned int i = 0; i<length;i++)
{
char buf[10] = {0};
unsigned char tempchar = tempstr[i];
sprintf_s(buf, 10,"%02x ",tempchar);
showstr += buf;
showstr += " ";
}
SetDlgItemText(IDC_EDIT1, (CString)showstr.c_str());
str.clear();
}
}
return 0;
}