//对IDC_COMMCTRL的操作,即对MSComm控件事件的响应
void CSerialCommDlg::OnOnCommCommtral() 
{
// TODO: Add your control notification handler code here
int countAgree=0,countDisAgree=0,countDisclaim=0;//同意数目,不同意数目,弃权数目
int countAllSel=0,countNoSel=0;//全选数目,全不选数目
int count1stand2nd=0,count1stand3rd=0;//选第一个和第二个数目,选第一个和第三个数目
int count2ndand3rd=0;//选第二个和第三个数目 //m_pSet->m_AGREENUMBER=0;
VARIANT variant_inp;
COleSafeArray safearray_inp;
LONG len,k;
BYTE rxdata[2048];//设置BYTE数组An 8-bit integer that is not signed.
CString strtemp;
if(bReceive)//按下开始接收按钮
{
if(m_Com.GetCommEvent()==2)//事件为2表示接收缓冲区内有字符
{
variant_inp=m_Com.GetInput();//读缓冲区
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++)
{
n++;//换行计数 BYTE bt=*(char*)(rxdata+k);//字符型
if(m_nInputMode==0)//十六进制
strtemp.Format("%02X ",bt);//将字符以无符号十六进制大写方式送入临时变量strtemp存放,注意这里加入一个空格
else
strtemp.Format("%c",bt);//将字符送入临时变量strtemp存放
m_strEditReceive=m_strEditReceive+strtemp;//加入接收编辑框对应字符串
//UpdateData(FALSE);//更新编辑框内容



if(!m_pSet->IsOpen())//如果没有打开数据表

{
//设置排序的字段和排序方式
m_pSet->m_strSort="ID";//默认是升序,降序为"ID DESC"
m_pSet->Open();//打开数据表
m_pSet->SetAbsolutePosition(1);//把游标放在第一个记录处,即ID=1处,不用nRecords,直接用1
}
//判断选涂的结果,并根据结果来存储到相应的字段里面 if(flag==0)
{
//int result = (strtemp.Find("FE ")!= -1) && (strtemp.GetLength() == 2);//直接用strcmp不正确,因为strtemp 是一个CString变量,CString是一个类哎 里面塞了很多的变量
//如果strtemp="FE "。这种方法比上一种更简单
if(strtemp.Compare("FE ")==0)//每页开始标志识别
flag=1;
else
flag=0;
}

if(flag==1)
{
if(strtemp.Compare("E3 ")==0)//第1页标志识别
{
m_pSet->SetAbsolutePosition(1);//把游标放到第1页开头
flag=2;
}
else if(strtemp.Compare("E5 ")==0)//第2页标志识别
{
m_pSet->SetAbsolutePosition(31);//把游标放到第2页开头
flag=2;
}
else if(strtemp.Compare("E7 ")==0)//第3页标志识别
{
m_pSet->SetAbsolutePosition(61);//把游标放到第3页开头
flag=2;
}
                                               else if(strtemp.Compare("FF ")==0)//第15页标志识别
{
m_pSet->SetAbsolutePosition(421);//把游标放到第15页开头
flag=2;
}
//else
// return; }

if(flag==2)
{
if(strtemp.Compare("69 ")==0)//同意
{
countAgree=m_pSet->m_AGREENUMBER;
countAgree++;
m_pSet->Edit();//编辑  20006-5-18下午14:33添加
m_pSet->m_AGREENUMBER=countAgree;
m_pSet->Update();//更新记录集
m_pSet->MoveNext();//移向下一个记录  
}
else if(strtemp.Compare("65 ")==0)//不同意
{
countDisAgree=m_pSet->m_DISAGREENUMBER;
countDisAgree++;
m_pSet->Edit();//编辑
m_pSet->m_DISAGREENUMBER=countDisAgree;
m_pSet->Update();
m_pSet->MoveNext();  
}
else if(strtemp.Compare("63 ")==0)//弃权
{
countDisclaim=m_pSet->m_DISCLAIMNUMBER;
countDisclaim++;
m_pSet->Edit();//编辑
m_pSet->m_DISCLAIMNUMBER=countDisclaim;
m_pSet->Update();
m_pSet->MoveNext();  
}




//判断游标是否到最后一个记录处,如果是,就把游标重新设置到第一处,即ID=1处重新开始存数据
//if(m_pSet->IsEOF())
// m_pSet->SetAbsolutePosition(1);//把游标放在第一个记录处,即ID=1处重新从第一个记录开始存数据


//判断游标是否到最后一个记录处,如果是,就把游标重新设置到第一处,即ID=1处重新开始存数据
if(m_pSet->IsEOF())
m_pSet->SetAbsolutePosition(1);//把游标放在第一个记录处,即ID=1处重新从第一个记录开始存数据
counts++;
if(counts==30)//如果读了30个,就把flag=0,开始读新的一页
flag=0;

}

}
}
if(n%32==0)
{
m_strEditReceive+="\r\n";//接收字符换行
m_ctrlEditReceive.LineScroll( 10, 0 );
n=0;
}
UpdateData(FALSE);//更新编辑框内容 return;
}