WEB开发网
开发学院软件开发VC MSComm 控件的 Modem 通讯 阅读

MSComm 控件的 Modem 通讯

 2006-07-21 11:16:03 来源:WEB开发网   
核心提示: 另外亦可通过修改对话框类的OnInitDialog()函数来设置控件的属性,具体参考MSDN中的关于Comm Control的详细说明,MSComm 控件的 Modem 通讯(2), if(m_comm.GetPortOpen()){ m_comm.SetPortOpen(FALSE);/

另外亦可通过修改对话框类的OnInitDialog()函数来设置控件的属性。具体参考MSDN中的关于Comm Control的详细说明。 if(m_comm.GetPortOpen())
 {
   m_comm.SetPortOpen(FALSE);  //设置串口配置信息前先要关闭串口
 }         
 
 m_comm.SetCommPort(1);    //Com1串行口   
 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="ATZ\r\n";    //调制解调器初始化
 m_comm.SetOutput(COleVariant(m_SendData));
二.接收数据

添加接收数据函数,在对话框中双击Comm Control,接受默认函数,则对话框类的成员函数为OnCommMscomm(),添加代码如下: Sleep(500);  //视各厂家modem而定。不加则数据接受不全
VARIANT m_input;
char *str,*str1;
int k,nEvent,i,len,m;
CString str2;
m_ReceiveData="";
nEvent=m_comm.GetCommEvent();
switch(nEvent)
{
case 2:                 //收到大于RTHresshold个字符
  k=m_comm.GetInBufferCount();     //接收缓冲区的字符数目
  if(k>0)
  {
    m_input=m_comm.GetInput();
    str=(char*)(unsigned char*)m_input.parray->pvData;
  }
  ?i=0;
  str1=str;
  while(i<k)
  {
    i++;
    str1++;
  }
  *str1=''\0'';               
  str2=(const char*)str;         //清除字符串中的不必要字符
  m_ReceiveData=(const char *)str;
  break;
case 3:            //CTS线状态发生变化
  break;
case 4:            //DSR线状态发生变化
  break;
case 5:            //CD线状态发生变化
  break;
case 6:            //Ring Indicator发生变化
  break;
}
  以上是在做工程之余写下的一点东西。VC我是初学者,有错误的地方,还请各位批评指正。例子在VC 6.0+Win2000下调试通过。Win98下测试数据接收不全。还望高手指点一二。

E-mail:qjxue@21cn.com

附:

单片机或PC机对MODEM的控制是通过设置MODEM的S寄存器和发送标准AT命令来实现的。命令行由AT或at开始,不能是At或aT。它的一般格式为“AT+指令+回车”常用的AT命令简介如下,详细的AT命令见本说明书附录。

&F 恢复出厂设置

DT××× 音频拨号, ×××表示电话号码

+++ 切换到在线命令状态

Sn=X 写S寄存器

Hn 摘机/挂机控制

n=0 挂机

n=1 摘机

S0=X X=0,不自动应答

X=1~255,振铃指定次数后自动应答

\N0 异步方式设定为0

\q0 XON\XOFF流控方式

上一页  1 2 

Tags:MSComm 控件 Modem

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接