16,471
社区成员
发帖
与我相关
我的任务
分享
void CMMC200_MotionControlSoftwareDlg::OnBnClickedButton4()
{
m_strTXData = _T("1POS?");
CString str=_T("");
int len = m_strTXData.GetLength();
for (int k = 0; k<len; k++)
{
CString strtemp;
strtemp.Format(_T("%02X "), m_strTXData[k]);
str.Append(strtemp);
}
str += _T("0A 0D");
m_strTXData = str;
//CByteArray senddata;
//Str2Hex(m_strTXData, senddata);
//m_ctrlComm.put_Output(COleVariant(senddata));//发送数据
::SendMessage(m_hWnd, COM_SENDMSG, 0, 0);
Sleep(500);
//AfxMessageBox(_T(""));
AfxMessageBox(m_strRXData);
UpdateData(false);
// TODO: 在此添加控件通知处理程序代码
}
串口控件函数:
void CMMC200_MotionControlSoftwareDlg::OnComm()
{
// TODO: 在此处添加消息处理程序代码
VARIANT variant_inp;
COleSafeArray safearray_inp;
LONG len, k;
BYTE rxdata[2048]; //设置BYTE数组 An 8-bit integerthat is not signed.
CString strtemp;
if (m_ctrlComm.get_CommEvent() == 2) //事件值为2表示接收缓冲区内有字符
{ ////////以下你可以根据自己的通信协议加入处理代码
variant_inp = m_ctrlComm.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);//将接收到的BYTE型数据转换为对应的十六进制
m_strRXData.Append(strtemp);
//m_strRXData = Hex2Ascii(m_strRXData);
}
}
UpdateData(FALSE); //更新编辑框内容
}