读书人

:C语言 用MODEM AT指令通过一个串口实

发布时间: 2012-02-17 17:50:42 作者: rapoo

【求助】:C语言 用MODEM AT指令通过一个串口实现拨号流程的控制
最近查阅了很多资料 大部分都是VC实现的源码
那个哥们有类型的东东发给小弟啊
注:是MODEM AT 不是GSM AT指令。
请大哥们先帮我讲解下如何实现这个控制流程
要有类似代码更好了
小弟是第一次做这个东东
谢谢!!!

[解决办法]
因为在BCB版,我以为是在BCB下作.手持机的话应该是用单片机的,N年没做,只能给你个思路
如果不用PPP协议,首先在LINUX下,只要有将COM连接到MODEM,配一下终端,然后将MODEM设成自动应答(当初我们是在windwos下用超级终端设置的,记得用的是贺氏的,具体的命令忘了,只记得要用到,AT&F和AT&K3&K4)
POS机用的是WATCH的,它本身提供了dail函数(低层的也做过,用汇编的,程序难找了)
拨号程序如下(由于环境不同,你只能参考)
BOOL DialHost(void)
{
xdata unsigned char *np,ucDial,ucCunt,aPhone[20];

cls();
puts("\n\xFF\xA6 呼出...");
ucCunt=0;
do{
strcpy(aPhone,aBeforeDial);
np=aTele_1+_HOST_TELE*(ucCunt%MAX_TELE);
if(*np==ZERO)continue;
strcpy(aPhone+strlen(aPhone),np);
ucDial=dial(aPhone,ucDialType);
if(ucDial==ESC)break;
else if(ucDial==ZERO)return FALSE;
if(ucDialTime)if(++ucCunt>=ucDialTime)break;
}while(1);
hungup();
return TRUE;
}

登录部分:
BOOL LoginHost(void)
{

cls();
puts("\n\xFF\xA6 正在登录");
do{
if(WaitString("login: "))break;
WriteStr(1,"xxxxx\x0D");
if(WaitString("Password:"))break;
WriteStr(1,"xxxxx\x0D\x0D");
if(WaitString("$ "))break;
WriteStr(1,"stty -echo\x0D");
if(WaitString("$ "))break;
PutError("登录成功",0);
return FALSE;
}while(1);
hungup();
PutError("登录失败",TRUE);
return TRUE;
}
数据传输:
void UpLoad(void)
{
....
if(DialHost()||LoginHost())return;
PutError("正在传输",0);
WriteStr(1,"cat > ");
WriteStr(1,CreateFileName()); //生成数据文件
WriteChar(1,0x0D);
...
WriteStr(1,"testtest"); //写数据
...
WriteStr(1,"\x04"); //文件结束
PutError("正在验证",0);
//验证程序
}
上面的只是流程的主要部分,主要原理是直接通过linux的终端登录,用cat写入文件.
对于低层的开发,各种平台是不同的,对用PC的DOS平台,你可以参考(我爱天安门)的.
[解决办法]

读书人网 >C++ Builder

热点推荐