ARM9和Linux下的GPRS模块C代码_第1页
ARM9和Linux下的GPRS模块C代码_第2页
ARM9和Linux下的GPRS模块C代码_第3页
ARM9和Linux下的GPRS模块C代码_第4页
ARM9和Linux下的GPRS模块C代码_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、ARM9和Linux下的GPRS模块C代码/我前个月使使用实验室的的周立功ARRM7实验箱箱配套的明基基GPRS模模块连接到我我的QQ24440V3开开发板,/在Linuux环境下,做做模块的初始始化、读取模模块内的某些些硬件信息和和拨打电话,实实现远程无线线控制,/如果想做更更复杂的操作作,在这些代代码的基础上上增加少量代代码即可实现现,/下面的代码码是C语言代代码,大部分分代码是我个个人编写的,部部分代码参考考了一些书籍籍资料,/我发现很多多网友使用明明基GPRSS模块的过程程中出现各种种问题,在这这里我贴出来来给大家参考考/如转载本文文章,请注明明本文出处hhttp:/s/blog_54

2、8d339f901100bcddp.htmml#includde /标标准输入输出出定义#includde /标准函数库库定义#includde /Unix 标准函数定定义#includde /文文件控制定义义#includde #includde #includde /PPSIIX 终端控控制定义#includde #includde #includde /错错误号定义#includde myyfuncttions.h /自定义函函数定义文件件static int ffd=0;struct termiios neewtio,oldtiio;/=/明基M233 GPRSS模块AT指指令,请参考

3、考明基的Daatasheeet/初始化指令令AT+HRRST=1,关闭模块的的电源AT$POWERROF,/长时间不与与M23 GGPRS模块块通讯之后再再次通讯时使使用指令ATT$NOSLLEEP=11/在拨打电话话时,在对方方接通电话之之后返回“OK”字符串,使使用指令ATT+COLPP=1/当有电话进进入时,显示示来电号码,在在初始化时需需加上指令AAT+CLIIP=1/读取SIMM卡的ID号号使用指令AAT+CIMMI/写入短信中中心号码,使使用AT+CCSCA=短信中心的的号码,1145/从模块读取取短信而不是是从SIM卡卡读取,使用用AT+CNNMI=2,2,0,00,0/提供本地

4、待待机提示音,使使用AT+GGDT=1,关关闭则用ATT+GDT=0/确定已经找找到SIM卡卡,使用ATT+COPSS?,若返回回0则表明没没有找到/数据通讯时时,如果网络络断开了,模模块返回NOO CARRRIER/数据通讯时时,调整发送送数据的延时时时间AT$TIMEOOUT=XXX,XX110050000毫秒/拨号指令“ATDxxx;”,XX是号号码,号码之之后必须带分分号/选择差分语语音通道:MM22M222A,ATT$AUPAATH=3,1;M233,AT$AAUPATHH=0,1;差分语音通通道,普通手手柄通话/选择单端语语音通道:MM22M222A,ATT$AUPAATH=2,1

5、;M233,AT$AAUPATHH=1,1;单端语音通通道,免提童童话/语音通话时时,调节发送送和接收增益益:AT$AAUGAINN=(0-22),(1-9) 其中中的(0-22)代表:00发送的SIIDE /TONE,11发送增益,22接收增益;(1-9)代表可选择择的增益范围围/另一条调节节接收增益的的AT指令AAT$AUVVOL=(00-5),00则关闭接收收,5为最大大/吉林移动的的信息中心+861388002000500/初始化GPPRS模块的的指令阵列/char * cmd220= AT, AT, AT$NNOSLEEEP=1, AT+GGDT=1, AT$AAUPATHH=0,1

6、, AT$AAUGAINN=1,7, AT$AAUGAINN=2,9;/=/=/int ttyy_writtecmd(char *buf,int nnbytess) int i; for(i=0; inbytees; i+) writee(fd,&bufii,1); usleeep(1000); write(fd,rn,2); usleepp(3000000); returnn tcdrrain(ffd);/int ttcdraiin (innt FILLEDES),The tcdrrain functtion wwaits untill all queueed outtput tto the

7、e termminal FILEDDES haas beeen traansmittted./=/=/int ttyy_readd(charr *buff,int nbytees) int r=0; r=readd(fd,bbuf,nbbytes); returnn r;/=/int reaad_inffo(chaar *buuf) int irr=0,irrn=0,nnux=0; nux=reead(fdd,buf,1); if(nuxx!=0)/如果读到到非零0个数数据 whilee(buf0!=0) buf+; ir+; read(fd,buuf,1); usleeep(50); els

8、e printtf(读出出0个数据!n); tcflussh(fd,TCIOFFLUSH);/清空空读写缓存/ returnn irn=ir+1;/=/int ttyy_writte(chaar *buuf,intt nbyttes) int i; for(i=0; inbytees; i+) writee(fd,&bufii,1); usleeep(1000); returnn tcdrrain(ffd);/=/int ttyy_end() tcseetattrr(fd,TTCSANOOW,&olldtio); / resstore old mmodem setinngs / /innt t

9、cssetatttr (innt FILLEDES, int WHEN, consst strruct ttermioos *TTERMIOOS-P) /This functtion ssets tthe atttribuutes oof thee termminal devicce witth fille / descrriptorr FILEEDES. The new aattribbutes are ttaken from the /struccture that TERMIIOS-P pointts to/=/void gpprs_innit() int ijj=0,innf=0,nn

10、umx=00; char rrt31000; for(ijj=0; iij7; ij+) tty_wwriteccmd(cmmdij, strrlen(ccmdijj); bzeroo(rt3,sizeoof(rt33100); inf=rread_iinfo(rrt3); printtf(返回回信息:nn); printtf(%ssn,rrt3); /=拨叫=/ void gpprs_caall(chhar *nnumberr, intt num) int i=0; tty_wrrite(ATD,3); /发送拨打打命令ATDD tty_wrrite(nnumberr,num); tty_w

11、rrite(;,1); tty_wrrite(rn,2); usleepp(20000000); printff(正在打打电话给:); for(i=0;innum;i+) printtf(%cc,nummberii); /=/int maiin(voiid) int kff=0,wrr=0,siimno=00,rt2nn=0,irrt2=0; char rrt1000; char rrt21000; char ssim=AT+CCOPS?; char nno=1359660064*;/电话号码 fd = oopen(/dev/s3c24410_seerial00,O_RRDWR); if(fd

12、0) perroor(oppen_poort errror); returrn; if(kff=set_opt(ffd,1155200,88,N,1)00) perroor(seet_optt erroor); returrn; gprs_iinit(); wr=ttyy_writtecmd(sim,sstrlenn(sim); bzero(rt,siizeof(rt1000); read_iinfo(rrt); if(rt0=0) usleeep(5000); read_info(rt); if(rt0!=0) printtf(获取取SIM卡n); else printtf(无法法获取SIM

13、M卡n); returrn; tty_wrritecmmd(ATT+CIMII,strrlen(AT+CIIMI); /获获取SIM卡卡的序列号/ bzero(rt2,ssizeoff(rt2100); rt2n=rread_iinfo(rrt2); printff(SIMM序号:nn); printff(%sn,rtt2); tty_wrritecmmd(ATT+CGSNN,strrlen(AT+CGGSN); /读读取产品的序序列号/ tty_ennd(); close(fd);/关闭设备备文件 returnn 0; /初初始化串口/int sett_opt(int ffd,intt nS

14、peeed, iint nBBits, char nEvennt, innt nSttop) if ( tcgettattr( fd,&oldtiio) != 0) perroor(SeetupSeerial 1); returrn -1; bzero( &newwtio, sizeoof( neewtio ) ); newtioo.c_cfflag |= CCLOCALL | CRREAD; newtioo.c_cfflag &= CSSIZE; switchh( nBiits ) case 77: newtiio.c_ccflag |= CSS7; breakk; case 88: new

15、tiio.c_ccflag |= CSS8; breakk; switchh( nEvvent ) case O: newtiio.c_ccflag |= PAARENB; newtiio.c_ccflag |= PAARODD; newtiio.c_iiflag |= (IINPCK | ISTTRIP); breakk; case E: newtiio.c_iiflag |= (IINPCK | ISTTRIP); newtiio.c_ccflag |= PAARENB; newtiio.c_ccflag &= PPARODDD; breakk; case N: newtiio.c_ccf

16、lag &= PPARENBB; breakk; switch( nSpeeed ) case 22400: cfsettispeeed(&neewtio, B24000); cfsettospeeed(&neewtio, B24000); breakk; case 44800: cfsettispeeed(&neewtio, B48000); cfsettospeeed(&neewtio, B48000); breakk; case 99600: cfsettispeeed(&neewtio, B96000); cfsettospeeed(&neewtio, B96000); breakk;

17、 case 11152000: cfsettispeeed(&neewtio, B1155200); cfsettospeeed(&neewtio, B1155200); breakk; case 44608000: cfsettispeeed(&neewtio, B4600800); cfsettospeeed(&neewtio, B4600800); breakk; defaullt: cfsettispeeed(&neewtio, B96000); cfsettospeeed(&neewtio, B96000); breakk; if( nSStop = 1 ) newtiio.c_ccflag &= CSTOPPB; else iif ( nnStop = 2 ) newtioo.c_cfflag |= CSSTOPB; newtioo.c_cccVTIMME = 0; newtioo.c_cccVMINN = 00; tcflussh(fd,TCIFLLUS

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论