我设置每接收4个字节数据就发生一次事件,事件处理函数如下。我发现事件发生时程序能响应下面的代码,但m_Dian1,m_Dian2,m_Dian3,m_Dian4不能更新?是不是GetInput()方法的问题???
void CDanpianjiDlg::OnOnCommMscomm1()
{
switch (myComm.GetCommEvent())
{
case 2:
VARIANT variant_inp;
COleSafeArray safearray_inp;
LONG len,k;
BYTE rxdata[5]; //设置BYTE数组 An 8-bit integerthat is not signed.
CString strtemp;
if(myComm.GetCommEvent()==2) //事件值为2表示接收缓冲区内有字符
{
variant_inp=myComm.GetInput(); //读缓冲区
safearray_inp=variant_inp; //VARIANT型变量转换为ColeSafeArray型变量
len=safearray_inp.GetOneDimSize(); //得到有效数据长度
for(k=0;k<len;k++)
safearray_inp.GetElement(&k,rxdata+k);//转换为BYTE型数组
m_Dian1=rxdata[0];
m_Dian2=rxdata[[1];
m_Dian3=rxdata[2];
m_Dian4=rxdata[3];
}
UpdateData(FALSE); //更新编辑框内容
}
}