描述:
串口设置如下: m_myComm.SetCommPort(1);
m_myComm.SetSettings("2400,O,7,1");
m_myComm.SetInBufferSize(1024);
m_myComm.SetInBufferCount(0);
m_myComm.SetInputMode(1);
m_myComm.SetInputLen(0);
m_myComm.SetRThreshold(11);
m_myComm.SetPortOpen(1);
m_myComm.GetInput();
然后,
int flag_num=0;
void CTESEEXCELDlg::OnOnCommMscomm1()
{
// TODO: Add your control notification handler code here
VARIANT input1;
long len1;
char rxdata2[1024];
char rxdata1[1024];
char rxdata[1024];
COleSafeArray safearray1;
switch(m_myComm.GetCommEvent())
{
long k;
case 2:
input1=m_myComm.GetInput();
safearray1=input1;
len1=safearray1.GetOneDimSize();
for(k=0;k<len1;k++)
safearray1.GetElement(&k,rxdata2+k);
rxdata2[k]='\0';
flag_num++;
//将接收到的六个数据分别送入6个框中显示;
if(flag_num==1)
{
m_Edit1lu+=rxdata2;
UpdateData(false);
}
if(flag_num==2)
{
m_Edit2lu+=rxdata2;
UpdateData(false);
}
if(flag_num==3)
{
m_Edit3lu+=rxdata2;
UpdateData(false);
}
if(flag_num==4)
{
m_Edit4lu+=rxdata2;
UpdateData(false);
}
if(flag_num==5)
{
m_Edit5lu+=rxdata2;
UpdateData(false);
}
if(flag_num==6)
{
m_Edit6lu+=rxdata2;
UpdateData(false);
}
m_myComm.SetInBufferCount(0);
UpdateData(false);
break;
default:
break;
}
}
显示的数据有时候正确,有时候错误,比如正确数据为257630304时候,显示的确实 ?57630304,而且这中错误总是在第一个框接收中出现;另外一个错误是,正确数据为289250304,接收显示的数据却为428925030。感觉第二种错误数据中的‘4’是前一个数据遗留下来?请高手帮忙,急!!!