怎么用AT命令收发传真

sytu_chyq 2010-01-07 11:16:22
用MODEM通过AT命令收发传真
CLASS 1下需要握手信号,如:<TSI frame data>,是什么格式啊,举个具体的例子啊
熟悉传真通信过程的能不能详细的说下,特别是各握手信号都给个实例,谢了。。
...全文
128 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
好呀,学习学习一下
sytu_chyq 2010-01-30
  • 打赏
  • 举报
回复
DTE向Modem发送帧数据时不需要帧校验序列,Modem完成帧校验。
sytu_chyq 2010-01-25
  • 打赏
  • 举报
回复
T.30协议
HDLC数据帧格式
A C FCF (FIF CS)
swl82560397pq 2010-01-07
  • 打赏
  • 举报
回复
mark!
z569362161 2010-01-07
  • 打赏
  • 举报
回复
使用微软自带的MSComm控件就可以全面搞定你的需求了,只要设置一下参数,就可以方便接收有发送。还不要使用其它库的好,用微软的比较安全和稳定。
你加入这个控件后,需要先初始化,然后就是可以很轻松的发送的数据了:
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));

后面你只要给 m_SendData 设置新值: m_SendData="AT****";
然后: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;
}

70,023

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧