ARM9和Linux下的GPRS模块C代码.doc
《ARM9和Linux下的GPRS模块C代码.doc》由会员分享,可在线阅读,更多相关《ARM9和Linux下的GPRS模块C代码.doc(8页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、ARM9和Linux下的GPRS模块C代码/我前个月使用实验室的周立功ARM7实验箱配套的明基GPRS模块连接到我的QQ2440V3开发板,/在Linux环境下,做模块的初始化、读取模块内的某些硬件信息和拨打电话,实现远程无线控制,/如果想做更复杂的操作,在这些代码的基础上增加少量代码即可实现,/下面的代码是C语言代码,大部分代码是我个人编写的,部分代码参考了一些书籍资料,/我发现很多网友使用明基GPRS模块的过程中出现各种问题,在这里我贴出来给大家参考/如转载本文章,请注明本文出处#include /标准输入输出定义#include /标准函数库定义#include /Unix 标准函数定义
2、#include /文件控制定义#include #include #include /PPSIX 终端控制定义#include #include #include /错误号定义#include myfunctions.h /自定义函数定义文件static int fd=0;struct termios newtio,oldtio;/=/明基M23 GPRS模块AT指令,请参考明基的Datasheet/初始化指令AT+HRST=1,关闭模块的电源AT$POWEROF,/长时间不与M23 GPRS模块通讯之后再次通讯时使用指令AT$NOSLEEP=1/在拨打电话时,在对方接通电话之后返回“OK”
3、字符串,使用指令AT+COLP=1/当有电话进入时,显示来电号码,在初始化时需加上指令AT+CLIP=1/读取SIM卡的ID号使用指令AT+CIMI/写入短信中心号码,使用AT+CSCA=短信中心的号码,145/从模块读取短信而不是从SIM卡读取,使用AT+CNMI=2,2,0,0,0/提供本地待机提示音,使用AT+GDT=1,关闭则用AT+GDT=0/确定已经找到SIM卡,使用AT+COPS?,若返回0则表明没有找到/数据通讯时,如果网络断开了,模块返回NO CARRIER/数据通讯时,调整发送数据的延时时间AT$TIMEOUT=XX,XX1005000毫秒/拨号指令“ATDxx;”,XX是
4、号码,号码之后必须带分号/选择差分语音通道:M22M22A,AT$AUPATH=3,1;M23,AT$AUPATH=0,1;差分语音通道,普通手柄通话/选择单端语音通道:M22M22A,AT$AUPATH=2,1;M23,AT$AUPATH=1,1;单端语音通道,免提童话/语音通话时,调节发送和接收增益:AT$AUGAIN=(0-2),(1-9) 其中的(0-2)代表:0发送的SIDE /TONE,1发送增益,2接收增益;(1-9)代表可选择的增益范围/另一条调节接收增益的AT指令AT$AUVOL=(0-5),0则关闭接收,5为最大/吉林移动的信息中心+8613800200500/初始化GPR
5、S模块的指令阵列/char * cmd20= AT, AT, AT$NOSLEEP=1, AT+GDT=1, AT$AUPATH=0,1, AT$AUGAIN=1,7, AT$AUGAIN=2,9;/=/=/int tty_writecmd(char *buf,int nbytes) int i; for(i=0; inbytes; i+) write(fd,&bufi,1); usleep(100); write(fd,rn,2); usleep(300000); return tcdrain(fd);/int tcdrain (int FILEDES),The tcdrain functi
6、on waits until all queued output to the terminal FILEDES has been transmitted./=/=/int tty_read(char *buf,int nbytes) int r=0; r=read(fd,buf,nbytes); return r;/=/int read_info(char *buf) int ir=0,irn=0,nux=0; nux=read(fd,buf,1); if(nux!=0)/如果读到非零0个数据 while(buf0!=0) buf+; ir+; read(fd,buf,1); usleep(
7、50); else printf(读出0个数据!n); tcflush(fd,TCIOFLUSH);/清空读写缓存/ return irn=ir+1;/=/int tty_write(char *buf,int nbytes) int i; for(i=0; inbytes; i+) write(fd,&bufi,1); usleep(100); return tcdrain(fd);/=/int tty_end() tcsetattr(fd,TCSANOW,&oldtio); / restore old modem setings / /int tcsetattr (int FILEDES,
8、 int WHEN, const struct termios *TERMIOS-P) /This function sets the attributes of the terminal device with file / descriptor FILEDES. The new attributes are taken from the /structure that TERMIOS-P points to/=/void gprs_init() int ij=0,inf=0,numx=0; char rt3100; for(ij=0; ij7; ij+) tty_writecmd(cmdi
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ARM9 Linux GPRS 模块 代码
限制150内