我用Mscomm控件通过串口读取条形码,mscomm控件已初始化,大不知为什么每次用扫描枪扫描条形码的时候,扫描枪好像会读两次数据的,代码如下:
void CMyDlg::OnOnCommMscomm1()
{
// TODO: Add your control notification handler code here
VARIANT variant_inp;
COleSafeArray colesafearry_inp;
LONG len,k;
BYTE rxdata[50];
CString strBarNum,strtemp;
if (m_com.GetCommEvent()==2)
{
variant_inp=m_com.GetInput();
colesafearry_inp=variant_inp;
len=colesafearry_inp.GetOneDimSize();
for(k=0;k<len;k++)
{
colesafearry_inp.GetElement(&k,rxdata+k);
}
for (k=0;k<len;k++)
{
BYTE bt=*(char*)(rxdata+k);
strtemp.Format("%c",bt);
strBarNum+=strtemp;
}
AfxMessageBox(strBarNum);
}
}
每扫描一次会弹出两次MessageBox的,请问这时甚么原因?谢谢
void CMyDlg::OnOnCommMscomm1()
{
// TODO: Add your control notification handler code here
VARIANT variant_inp;
COleSafeArray colesafearry_inp;
LONG len,k;
BYTE rxdata[50];
CString strBarNum,strtemp;
if (m_com.GetCommEvent()==2)
{
variant_inp=m_com.GetInput();
colesafearry_inp=variant_inp;
len=colesafearry_inp.GetOneDimSize();
for(k=0;k<len;k++)
{
colesafearry_inp.GetElement(&k,rxdata+k);
}
for (k=0;k<len;k++)
{
BYTE bt=*(char*)(rxdata+k);
strtemp.Format("%c",bt);
strBarNum+=strtemp;
}
AfxMessageBox(strBarNum);
}
}
每扫描一次会弹出两次MessageBox的,请问这时甚么原因?谢谢
colesafearry_inp.GetOneDimSize()中的GetOneDimSize()在variant_inp里边没有?而colesafearry_inp.GetOneDimSize()是什么意思?感觉是variant_inp中的内容扣到colesafearry_inp中之后colesafearry_inp又调用自身的GetOneDimSize()方法获取读入的条形码 colesafearry_inp.GetElement(&k,rxdata+k);中的GetElement(&k,rxdata+k)函数是干啥用的rxdata不是数组名吗?它加上k是啥意思?