运行界面:
步骤
这里是双击控件后生成的所有函数,以及我们为Active控件添加的事件处理函数,定时函数等
在这里也可以看到我们创建的变量
首先是串口
void CMFCcktestDlg::OnCommMscomm3()
{
// TODO: 在此处添加消息处理程序代码
VARIANT variant_inp;
COleSafeArray safearray_inp;
long len, k;
byte rxdata[2048]; //设置BYTE 数组
CString strtemp, buffer;
if (m_mscomm.get_CommEvent() == 2) //值为2表示接收缓冲区内有字符
{
if (BST_UNCHECKED == ((CButton*)GetDlgItem(IDC_CHECK16RECEIVE))->GetCheck())
{
//以下是正常显示效果处理代码,十六进制显示
variant_inp = m_mscomm.get_Input(); //读缓冲区
safearray_inp = variant_inp; //VARIANT型变量转换为ColeSafeArray型变量
len = safearray_inp.GetOneDimSize(); //得到有效数据长度
for (k = 0; k < len; k++)
safearray_inp.GetElement(&k, rxdata + k);//转换为BYTE型数组
for (k = 0; k < len; k++) //将数组转换为Cstring型变量
{
BYTE bt = *(char*)(rxdata + k);//字符型
strtemp.Format(_T("%c"), bt); //将字符送入临时变量strtemp存放
if (strtemp == '\n' || strtemp == '\r')
{
strtemp = "\r\n";
}
//此处编译有错误,可在项目属性->配置属性->常规里将“字符集”改为使用多字节字符集即可
m_EditReceive += strtemp; //加入接收编辑框对应字符串
}
//UpdateData(FALSE); //更新编辑框内容
SetDlgItemText(IDC_EDIT2, m_EditReceive);
/*IDC_RECEIVE_EDIT1->ReplaceSel(m_strRXDATA, FALSE);*/
//m_mscomm.LineScroll(m_mscomm.GetLineCount());//clw注释
}
else//字符串显示
{
variant_inp = m_mscomm.get_Input(); //读缓冲区
safearray_inp = variant_inp; //VARIA NT型变量转换为ColeSafeArray型变量
len = safearray_inp.GetOneDimSize(); //得到有效数据长度
for (k = 0; k < len; k++)
{
safearray_inp.GetElement(&k, rxdata + k);//转换为BYTE型数组
/* strtemp.Format(_T("%02X"), *(rxdata + k));
buffer += strtemp;*/
}
//buffer.TrimLeft();
//buffer.TrimRight();
//CByteArray receivedata;
//int receivedatalen;
//receivedatalen = Str2Hex(buffer, receivedata);
for (k = 0; k < len; k++)
{
switch (rxdata[k] / 16)
{
case 0: m_EditReceive += '0'; break;
case 1: m_EditReceive