我想用AT命令监测振铃信号
另外大家指点一下:
(1)用mscomm控件是不是不能监测振铃信号
(2)判断对方是否摘机是否只有对声音进行采样分析一种方法
谢谢!!!!!!!!!!!!!!!!!!!!!!!1111111111

解决方案 »

  1.   

    但我读串口时只能读到busy,No Carriage信号
      

  2.   

    那就对拉。。busy是对方忙。。nocarriage是对方没有接通你在多接收几种状态。或者直接看AT指令手册。。你离成功不远了
      

  3.   

    为什么不能监测到Ring 信号,Connect 信号呢
      

  4.   

    也许是你的MODEM不支持语音,我用GPRS,或者CDMA的支持语音的无线MODEM都可以侦测到
      

  5.   

    晕,差别这么大,你看一下我的程序有什麽毛病没??
    CMSComm m_comm;
    CString m_SendData;
    if(m_comm.GetPortOpen()) 
      { 
         m_comm.SetPortOpen(FALSE); //设置串口配置信息前先要关闭串口 
      }                   
      
      m_comm.SetCommPort(3); //Com3串行口       
      m_comm.SetSettings("9600,n,8,1");//设置波特率为9600bps,无奇偶校验位,数据位8位,停止位1位 
      m_comm.SetInputMode(1); //设置数据通讯格式为二进制数组格式 
      m_comm.SetRThreshold(1); //设置为每次接到一个字节数据就触发OnComm事件 
      if(!m_comm.GetPortOpen())  
      { 
         m_comm.SetPortOpen(TRUE); 
      }    m_comm.GetInput(); //清除串口输入缓冲区中残留数据 
      m_SendData="ATDT7411\r\n"; //调制解调器初始化 
      m_comm.SetOutput(COleVariant(m_SendData));
    void CIiiiDlg::OnOnCommMscomm1() 
    {  VARIANT m_input1; 
    COleSafeArray m_input2; 
    LONG length,i; 
    BYTE data[1024]; 
    CString str; 

    //接收缓冲区内字符 
    if(m_comm.GetCommEvent()== 2)  

    m_comdata.Empty(); 
    //读取缓冲区内的数据 
    m_input1=m_comm.GetInput();  
    //将VARIANT型变量转换为ColeSafeArray型变量 
    m_input2=m_input1;  
    //确定数据长度 
    length=m_input2.GetOneDimSize();  
    //将数据转换为BYTE型数组 
    for(i=0;i< length;i++) 
    m_input2.GetElement(&i,data+i);  
    data[i]='\0';
    //将数组转换为CString型变量 
    str.Format("%s",data);
    m_comdata=m_comdata+str+"\n";
    m_edit=m_comdata;//m_edit为一CString变量
    UpdateData(false);
    /*在上面的程序中,先将VARIANT型变量 
    转换为ColeSafeArray型变量,再将其转换为 
    BYTE型数组,然后将数组转换为CString型变量, 
    以满足不同的变量类型显示数据的需要。*/ 
    }
    }
    //Connect 信号检测不到
      

  6.   

    并不是差别大。。而是你用串口控件。。把通讯暴露在程序外面了。。我是用API并接自己做了封装。
    你的程序我看不出在什么地方判断了接受过来的信息是“no car”,"call", "ring"