te0”; initstrings[]=0; //设定该字符为null initstrings[]=0; initstrings[]=0; pdata.name=“169”; //拨号上网的用户名 pdata.passwd=“169”; //拨号上网的用户口令 pdata.baudrate=28800; //设置波特率 pdata.hwflowctrl=1; //启用硬件流控制 pdata.usemodem=1; pdata.modemdialstring=“atdt 169”; //atdt为双音频拨号指令 pdata.auth=ippp_auth_pap; //提供pap验证 pdata.modeminitstrings=initstrings; //modem初始化的系统指令,必须以nlll结尾 rc=isinitstack(); //初始化硬件栈子系统 if{re= =ret_code_ok} { while(do_connect) { rc=ispppcheck(); //检查ppp连接是否激活 if(rc= =
送at指令执行的。 对plc数据的读写操作如操作界面的右上部所示,在相应文本框内填写好数据的类型、地址、数值和操作方式后点击“发送”即可执行对plc的读或写操作。界面的下半部分显示的是pc串口发送和接收的代码以及当前操作的结果。 3.2 系统上位计算机的串口设置 在上位pc的人机界面中,串口的设置是通过下拉选择框选择出所连接的串口后由程序自动读取。在使用gsm modem无线模块时,上位pc对远程plc链接呼叫时采用的是at指令。程序语句为:mscomm1.output=“atdt”&trim (text1.text)& vbcrlf//text1文本框内为欲连接的电话号码。挂机的at指令为:mscomml.output=“atdt”&“+++”& vbcrlf。串口数据格式的设定语句为:mscomml.settings=“9600. n,8.1”,与tc35igsm modem无线通讯模块和远程plc自由口的串行数据通讯格式一致。 3.3 通讯数据格式的约定 由于远程plc采用的是自由口用户通讯方式,这里对每次收发数据字节暂约定为1
串口逐字节地提交至mc35并发送。在接收数据时,mc35首先将接收的数据逐字节地提交至ppp层;经ppp层将分散的各字节重组成一帧完整的ip数据报之后,再提交至tcpip层进行详细的处理,具体流程如图4所示。 在开机初始化时要完成mc35的启动并登录移动梦网网关,建立与服务提供商的连接。一般在发送指令之前先要发送一条测试指令,以检测mc35的当前状态,该指令的格式为“at\r”;在入网网关及流量控制等参数通过at指令设置完成之后,便可通过服务编码99开始呼叫与服务提供商建立连接,指令格式为atdt*99***1#\r\n。若在该指令执行之后给定的时间内返回connect信息,则表明与服务提供商的连接建立成功;否则,表明拨号失败,无线传输功能无法正常启动。mc35成功登录移动梦网网关之后,将自动从命令模式切换到数据通信模式,且串口通信方式由原来的查询式变为中断方式。此时由系统主动发送一帧ppp请求信息,服务提供商接到该请求信息后主动发出询问帧,协商相关参数的设置。待服务参数及用户身份验证成功之后,服务提供商为系统分配一独立ip,至此便可认为gprs成功上线。 图4 gprs无线数据传输
v dptr,#p3fd ;通信线状态寄存器mst2:movx a,@dptrjnb acc.5,mst2mov dptr,#mtabmov a,r4movc a,@a+dptrjz mst3mov dptr,#p3f3 ;数据发送保持寄存器movx @dptr,ainc r4sjmp mst0mst3:retmtab:db 41h,54h,26h,53h,30h,3dh,33hdb 0dh,0 ;at&fs0=3子程序执行后modem应答"ok",表示初始化完成。modem拨号命令串"atdtxxxxx",xxxxx是电话号码;拨号成功时modem将应答以"connect"字符开始的字符串。单睡机与系统主机连接完成后,按通信协议所规定的数据串通信交换数据。数据通信结束后,程序发送挂断线路命令串"+++ath0",modem自动断线,从而完成1次通信。三、系统主机与雨量监测仪的通信系统主机软件用vb5.0编制,运行于windows 95环境。整个软件由通信、日报表、月报表、年报表、设定、曲线图、报警等模块组成,操作平台如图3所示。主机可与30个站点的雨量监测仪连接。程序中使用mscom
器定制的时间(称为保证时间,缺省为1s),以保证modem接收到该命令;否则,+++将被当作普通数据处理。该命令不挂断线路而是让modem进入命令状态,即在线命令状态。④athn。该命令执行挂机操作。在在线命令状态时,使用该命令迫使modem挂机,拆除通信链路。n=0,挂机,并将modem置于命令状态;n=1,摘机。需要特别指出的是,gprs modem只是兼容了hayes制式的at指令集,但是在gprs应用中,gprs modem对at指令集做了扩充。以西门子的mc35模块为例,它的拨号指令是atdt*99***1#;接入gprs状态的指令是at+cgdata=ppp。3 系统软件3.1 模块化设计监测器软件采用模块化的设计方法,用汇编语言编写。按功能可分为:初始化器件模块、进入gprs网络模块、实时测量模块(与电力远动采集模块之间通信获取实时参数)、历史数据记录模块和gprs远程通信模块。gprs远程通信模块包括呼叫管理中心建立通信链路模块、发送常规记录子模块、发送1天最大最小值记录子模块、发送越限报警记录子模块、发送来停电报警记录子模块以及命令字分析子模块。命令字分析子模块负责实时分析g
谢谢解答!不过我决定不采用这个方案了.谢谢解答!不过我决定不采用这个方案了.我现在采用两个modem中间接一个交换机,但又出现一个新的问题:在我发送命令atdt*804(*804是交换机上另一个口的号码)后,对应的电话机响,但摘机后,modem却返回no carrier,是不是我的哪个配置弄错了?但我现在这样配置却可以把拨通电话啊.第一次弄modem,感觉问题好多.谢谢解答
moden返回结果码busy说明什么问题??用串口助手给moden发atdt音频拨号指令拨另一个moden后,过了一段时间本moden返回结果码busy,说明什么问题?? * - 本贴最后修改时间:2006-3-22 20:25:10 修改者:sjl2006
moden返回结果码busy说明什么问题??用串口助手给moden发atdt音频拨号指令拨另一个moden后,过了一段时间本moden返回结果码busy,说明什么问题??
efine pdpat+cgqreq=1,0,0,3,0,0 // qosat+cgact=1,1按着user guide,修改/etc/reslov.conf加入dns,"10.0.0.172"编辑/etc/ppp/option.gprs如下:~~~~~~~~~~~~~~~~~~~~~~~~~~nodetachdebugkdebug 7name cmnetconnect "chat -vs echo off at\r ok ate0v1\r ok atdt*99***1# connect"novjnomagicnumberasyncmap 0defaultrouteusepeerdns~~~~~~~~~~~~~~~~~~~~~然后:pppd ttys0 115200 file /etc/ppp/option.gprs但是这样出现错误.首先不这样执行的话,一直在minicom执行,也出现错误.at+cgpaddr=1得到ip是 " 10.101.67.214"但at+cgdata="ppp",1但出