怎么用AT命令收发传真

sytu_chyq 2010-01-07 11:16:22
用MODEM通过AT命令收发传真
CLASS 1下需要握手信号,如:<TSI frame data>,是什么格式啊,举个具体的例子啊
熟悉传真通信过程的能不能详细的说下,特别是各握手信号都给个实例,谢了。。
...全文
83 点赞 收藏 5
写回复
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;
}
回复 点赞
发动态
发帖子
C语言
创建于2007-09-28

3.2w+

社区成员

24.0w+

社区内容

C语言相关问题讨论
社区公告
暂无公告