当前位置: 代码迷 >> VC >> 拨号程序解决方案
  详细解决方案

拨号程序解决方案

热度:382   发布时间:2013-02-25 00:00:00.0
拨号程序
自己写了一个modem的拨号程序,想向超级终端一样可以通过输入号码来实现拨号,可是自己写的却没有任何反映,请问该怎样写呢?是不是ATDTxxxxxxxx命令?(x表示号码)
部分源码如下:

void   CModemCommDlg::OnComm()   //消息映射
{
//   TODO:   Add   your   control   notification   handler   code   here
VARIANT   vResponse;
char   *str;
char   *str1;
int   k,nEvent,i;

nEvent=m_ctrlcomm.GetCommEvent();

switch(nEvent)
{
case   2://收到大于RTHresshold个字符
k=m_ctrlcomm.GetInBufferCount();
if(k> 0)
{
vResponse=m_ctrlcomm.GetInput();//读取
//处理数据
str=(char*)(unsigned   char*)vResponse.parray-> pvData;
}
//接收字符,MSComm控件发送事件
i=0;
str1=str;
while(i <k);
{
i++;
str1++;
}
//清除不必要的字符
*str1= '\0 ';
m_ReceiveData+=(const   char*)str;

break;
case   3://CTS线状态变化
break;
case   4://DSR线状态变化
break;
case   5://CD线状态变化
break;
case   6://Ring   Indicator发生变化
break;
}
UpdateData(false);
}

void   CModemCommDlg::OnDial()   //拨号按钮
{
//   TODO:   Add   your   control   notification   handler   code   here
CString   strTemp;
if(!bOpen)
{
UpdateData(true);
bOpen=true;
//向猫发送指令
strTemp= "ATDT "+m_TelphoneNo+ "\n ";
AfxMessageBox(strTemp);
SendString(strTemp);
m_ctrlDial.SetWindowText( "挂断 ");
// AfxMessageBox(m_TelphoneNo);
}
else
{
SendString( "ATH0 ");
bOpen=false;
m_ctrlDial.SetWindowText( "拨号 ");

}
}

void   CModemCommDlg::SendString(CString   m_strSend)   //字符发送函数
{
char   TxData[100];
int   Count=m_SendData.GetLength();
for(int   i=0;i <Count;i++)
TxData[i]=m_SendData.GetAt(i);
CByteArray   array;
array.RemoveAll();
array.SetSize(Count);
for(i=0;i <Count;i++)
array.SetAt(i,TxData[i]);
m_ctrlcomm.SetOutput(COleVariant(array));

}

void   CModemCommDlg::OpenComm(int   number)   //选择、打开串口
{


if(!m_ctrlcomm.GetPortOpen())
{ m_ctrlcomm.SetCommPort(number);
m_ctrlcomm.SetPortOpen(true);
SendString( "ATS0=1\n ");
bOpen=false;
m_ctrlDial.SetWindowText( "拨号 ");
AfxMessageBox( "打开成功! ");
}
else
AfxMessageBox( "该串口已被占用,请选择其他串口 ");
}

------解决方案--------------------------------------------------------
  相关解决方案