MFC 串口通信接收的数据进行内部提取 10

是这样的,串口通信我实现的情况下。我要OnCom里面对数据进行提取,然后与一个数组常亮进行比较,如果相等,我就置位一个标志位。比如,①我上位机发送一串数组4个字节0xFD... 是这样的,串口通信我实现的情况下。我要OnCom里面对数据进行提取,然后与一个数组常亮进行比较,如果相等,我就置位一个标志位。
比如,
①我上位机发送一串数组 4个字节 0xFD,0x00,0xFE。 √
②过了5秒钟,我再发送0xFF,0xFA,0x00,0xFD. √
③下位机接收到0xFF,0xFA,0x00,0xFD后再发送这组数据回去给上位机。×
④上位机接收到下位机发送的0xFF,0xFA,0x00,0xFD后置位另一个标志位。
这就是我的需求。对号(√)表示已经实现,第三点没实现求帮助。只要第三点解决了,我的问题就解决了。下面贴上我的下位机的关键代码(也就是第③点):

void C新元素X光控制板检测工具Dlg::OnComm() //Compare[4] = {0xFF,0xFA,0x00,0xFD}
{
// TODO: 在此处添加消息处理程序代码
static unsigned int cnt=0;
VARIANT variant_inp;
COleSafeArray safearray_inp;
long len,k;
unsigned int data[1024]={0};
byte rxdata[1024]; //设置 BYTE 数组
CString strtemp;
if(m_mscom.get_CommEvent()==2) //值为 2 表示接收缓冲区内有字符
{
cnt++;
variant_inp=m_mscom.get_Input(); //读缓冲区消息
safearray_inp=variant_inp; //变量转换
len=safearray_inp.GetOneDimSize(); //得到有效的数据长度
for(k=0;k<len;k++)
{
safearray_inp.GetElement(&k,rxdata+k);
}
for(k=0;k<len;k++)
{
BYTE bt = *(char*)(rxdata);
strtemp.Format(_T("%x"),*(rxdata+k));
m_DetectResultDisplay += strtemp;
}
ExposureFlag = ((Compare[0] == rxdata[0]) && (Compare[1] == rxdata[1]) &&(Compare[2] == rxdata[2]) &&(Compare[3] == rxdata[3]));
if(ExposureFlag == 1) //Compare[4] = {0xFF,0xFA,0x00,0xFD}
{
CString SendDat0 = _T("0xFF");
CByteArray hexdata0;
int len0 = String2Hex(SendDat0,hexdata0); //此处返回的len可以用于计算发送了多少个十六进制数
m_mscom.put_Output(COleVariant(hexdata0)); //发送十六进制数据
CString SendDat1 = _T("0xFA");
CByteArray hexdata1;
int len1=String2Hex(SendDat1,hexdata1); //此处返回的len可以用于计算发送了多少个十六进制数
m_mscom.put_Output(COleVariant(hexdata1)); //发送十六进制数据
CString SendDat2 = _T("0x00");
CByteArray hexdata2;
int len2=String2Hex(SendDat2,hexdata2); //此处返回的len可以用于计算发送了多少个十六进制数
m_mscom.put_Output(COleVariant(hexdata2)); //发送十六进制数据
CString SendDat3 = _T("0xFD");
CByteArray hexdata3;
int len3=String2Hex(SendDat3,hexdata3); //此处返回的len可以用于计算发送了多少个十六进制数
m_mscom.put_Output(COleVariant(hexdata3)); //发送十六进制数据
}
}
UpdateData(FALSE);
展开
 我来答
匿名用户
2016-07-09
展开全部
拟这部就是 龚建伟 的 教程?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式