我在写一个测试程序,需要与USB连接的通讯板通讯,通讯板驱动程序已经安装好,显示的串口号是COM3,打开串口及写串口都正常,但是通讯板没有回应。只要我写入命令字符串,通讯板正常的回应应该是错误代码或应答代码。比如我写入字符串“T11001”,通讯板回应"A5".但现在通讯板没有任何反应,请教各位高手,这是怎么回事?下面是代码,我用的是CSerialPort类。

void CDataCal::OnButtonOpencom()
{
 // TODO: Add your control notification handler code here
 CString str;
 CString strName;
 int sel=m_SelCom.GetCurSel();
 m_SelCom.GetLBText(sel,str);//取得要打开的通信端口
 CString t=str.Right(1);
 dwPort=atoi(t);
 DispText(str);
 
 //打开串口COM
    CButton *but=(CButton*)GetDlgItem(IDC_BUTTON_OPENCOM);
 but->GetWindowText(strName);
 unsigned int dwBaud=19200;
 unsigned int dwStopBit=1;
 unsigned int dwDataBits=8;
 char chParity;
 
 CString strBaud,strStopBit,strDataBits,strParity;
// DWORD dwStopBit,dwDataBits,dwBaut;
 strBaud.Format("波特率:%d",dwBaud);
 strStopBit.Format("停止位:%d",dwStopBit);
 strDataBits.Format("数据位:%d",dwDataBits);
 strParity.Format("校验:%c",'N');

 if(strName=="打开")
 {
  //hCom = CreateFile(str , GENERIC_READ | GENERIC_WRITE,
          //    0, NULL, OPEN_EXISTING, 0, 0);
  if(m_comport.InitPort(this,dwPort,dwBaud,'N',dwDataBits,dwStopBit,EV_RXFLAG|EV_RXCHAR,512))
  {
   m_comport.StartMonitoring();
   but->SetWindowText("关闭");
   DispText("打开");
   DispText("串口初始化完成!");
   DispText(strBaud);
   DispText(strDataBits);
   DispText(strStopBit);
   DispText(strParity);
   CButton *tmp=(CButton*)GetDlgItem(IDC_BUTTON_INITILATECOM);
   tmp->EnableWindow(TRUE);
  }
  else
  {
   MessageBox("串口打开失败!");
   CButton *tmp=(CButton*)GetDlgItem(IDC_BUTTON_INITILATECOM);
   tmp->EnableWindow(FALSE);
  }
  
    }
 else
 {
  but->SetWindowText("打开");
  m_comport.StopMonitoring();
  m_comport.ClosePort();
  
  DispText("关闭");
 }
 
}

 

void CDataCal::OnCommRecv(WPARAM ch,LPARAM port)
{
// UpdateData(true);
 //读取串口上的字符
 //char str[100];
 CString m_ReceiveMsg;
 m_ReceiveMsg.Format("%c",ch);
// m_comport.ReceiveChar(port,comstat);//.ReadString(str, 100);
 DispText(m_ReceiveMsg);
 UpdateData();

}

 

void CDataCal::OnButtonInitasic()
{
 // TODO: Add your control notification handler code here
 
 
// CCHIPINIT dlg;
// dlg.DoModal();
/* if(dlg.DoModal()==IDOK)
 {
  flip=this->m_chit.m_flip.GetCheck();
  sel1=this->m_chit.m_sel1.GetCheck();
  sel2=m_chit.m_sel2.GetCheck();
  sel3=m_chit.m_sel3.GetCheck();
  sel4=m_chit.m_sel4.GetCheck();
  outmode=m_chit.m_outmode.GetCurSel();
  jfet=m_chit.m_Tjfet.GetCurSel();
  rate=m_chit.m_rate.GetCurSel();
  pregain=m_chit.m_pregain.GetCurSel();
 }*/

 CString cOutBuffer;//发送缓冲
 cOutBuffer="t11001\n";
// lpOutBuffer=(LPCTSTR)cOutBuffer;
// lpOutBuffer = &cOutBuffer;
 m_comport.WriteToPort((LPCTSTR)cOutBuffer,8);
 unsigned long dwriteSize=m_comport.m_nWriteSize;
 if(!dwriteSize)
 {
  DispText("写串口失败!");
  return ;
 }
 else
 {
  DispText("命令:T11001");
 }

}