如题,使用的是CserialPort类制作的一个小的串口调试工具,需要工具在接收到数据帧的时候能后自动应答。现在数据是成功的接收到了,但是发送好像总是不成功,哪位大侠可以指教一下。下面是原码:
LPARAM CToolDlg::OnReceiveData(WPARAM ch, LPARAM port)
{
UpdateData(true);
m_uReceiveBytes++;
CString strTemp,iTemp;
//BYTE iTemp=0;
strTemp.Format("%d",m_uReceiveBytes);
m_StrReceiveBytes=strTemp;
if(m_bHexReceive)
{

iTemp=DevideHexChar(ch);

m_StrReceiveData += iTemp+_T(" ");

}
else
m_StrReceiveData += char(ch);
UpdateData(false); ((CEdit*)GetDlgItem(IDC_EDIT_RECEIVE_DATA))->LineScroll(
m_StrReceiveData.GetLength()/(((CEdit*)GetDlgItem(IDC_EDIT_RECEIVE_DATA))->LineLength())); m_Wireless_BUFFER[m_bRevComm]=ch;

//从下面开始解析串口传送过来的数据帧
if((m_Wireless_BUFFER[0]==RF_Synchronization_Frame))   //发现同步帧开始接受否则继续监听
          m_bRevComm++;
        else
        {
        
          Comm_Wireless_Modify.Clear_RxBuffer(m_Wireless_BUFFER,&m_bRevComm);
  m_bRevComm=0;
        }                if(m_bRevComm==2)                 //第二个字节不是 RF_STX  清除缓存
        {
          if(m_Wireless_BUFFER[1]!=RF_STX)
          {
             Comm_Wireless_Modify.Clear_RxBuffer(m_Wireless_BUFFER,&m_bRevComm);
          }
        }
if(m_bRevComm>2)
{         
           if((m_bRevComm==(m_Wireless_BUFFER[2]+3))&&
                  (m_Wireless_BUFFER[m_bRevComm-1]==0x03))
           {
             if((m_Wireless_BUFFER[3]==RF_RECEIVED_FRAME_ACK_CMD)&&
                (m_Wireless_BUFFER[7]==0x1f))
             {                       
             }
                   
               Comm_Wireless_Modify.m_nCRC_Result=Comm_Wireless_Modify.CRC_New((m_Wireless_BUFFER[2])-2, &(m_Wireless_BUFFER[2]));
               
               if(((Comm_Wireless_Modify.m_nCRC_Result>>8)==m_Wireless_BUFFER[m_bRevComm-2])&&
                      ((Comm_Wireless_Modify.m_nCRC_Result&0xFF)==m_Wireless_BUFFER[m_bRevComm-3]))
               {     m_SerialPort.InitPort(this,MAX_SERIAL_PORT_NUM-1);
                        switch(m_Wireless_BUFFER[3] )
                        {
                                case RF_ACK_CMD:  
                                                               break;
                                case RF_NACK_CMD:
                                                               break;
                                case RF_RES_FW_VERSION_CMD:  
                                                                Comm_Wireless_Modify.Ack_NAck_All_Group_Fun(RF_ACK_CMD,AON_ACK_Length);
                                                                                                                      
                                                                break;
                                case RF_RECEIVED_FRAME_CMD:   
                                                              Comm_Wireless_Modify.Ack_NAck_All_Group_Fun(RF_ACK_CMD,AON_ACK_Length);
                                                              
                                                                switch(m_Wireless_BUFFER[10])
                                                                {
                                                                  case 0x12 : //读取实时温度,加含时间戳
                                                                              
                                                                              break;   //读取实时温度信息 
                                                                  case 0x13 : 
                                                                              break;   //读取实时温度信息
                                                                               
                                                                  case 0x14:  break;
                                                                               
                                                                  case 0x15:  break;
                                                                                
                                                                  case 0x16:  break;
                                                                               
                                                                               
                                                                  case 0x17:  break; //矫正0温度点
                                                                                 
                                                                
                                                                default :break;
                                                                
                                                                }
                                                                break;
                                case RF_RECEIVED_FRAME_ACK_CMD:
                                                             Comm_Wireless_Modify.Ack_NAck_All_Group_Fun(RF_ACK_CMD,AON_ACK_Length);break;
case RF_ACK_SEND_CMD:
 Comm_Wireless_Modify.Ack_NAck_All_Group_Fun(RF_ACK_CMD,AON_ACK_Length);
                                                                 break;
                                default:
                                                                break;
                        }
                        
                   
               }
               else 
               {
             
                Comm_Wireless_Modify.Ack_NAck_All_Group_Fun(RF_NACK_CMD,AON_ACK_Length);
               }
               
              Comm_Wireless_Modify. Clear_RxBuffer(m_Wireless_BUFFER,&m_bRevComm);               
            }  
} return 0;
}第一次写上位机调试软件,还请大家指教