PDU 实现发送短信源程序
2010-04-12 17:44
281 查看
//发送短信 #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <stdio.h> #include <unistd.h> #include<termios.h> #include<string.h> #include<iconv.h> int init_device(int portfd); int build_pdu(const char * phone,const unsigned char * msg,unsigned char * pdu); int code_convert(const char * srccode,const char * dstcode,const unsigned char * inbuf,unsigned char * outbuf); int main() { int portfd,n,len; char cmd[255],msg[255],pdu[255]; char ctrlz=26; portfd=open("/dev/ttyS1",O_RDWR); init_device(portfd); sprintf(cmd,"AT+CMGF=0/r"); sleep(1); write(portfd,cmd,strlen(cmd)); sleep(1); len=build_pdu("8613824798167","黄林武",pdu); sprintf(cmd,"AT+CMGS= %d/r",len); write(portfd,cmd,strlen(cmd)); sleep(1); write (portfd,pdu,strlen(pdu)); write (portfd,&ctrlz,1); sleep(1); close(portfd); } int init_device(int portfd) { struct termios tty; tcgetattr(portfd,&tty); cfsetospeed(&tty,B115200); cfsetospeed(&tty,B115200); tty.c_cflag&=~CSIZE; tty.c_cflag|= CS8; tty.c_lflag&=~(ICANON | ECHO | ECHOE); tty.c_cflag|= CREAD; tty.c_cflag&=~(PARENB | CSTOPB); tty.c_iflag|=IXON; tty.c_iflag|=IXOFF; tty.c_iflag|=IXANY; tty.c_cflag&=~CRTSCTS; tty.c_cc[VMIN] = 0; tty.c_cc[VTIME] = 10; tcsetattr(portfd,TCSANOW,&tty); return 0; } int build_pdu(const char * phone,const unsigned char * msg,unsigned char * pdu) { unsigned char pdu_phone[128],temp_phone[128],buf[255],pdu_msg[255]; int i,n; sprintf(pdu,"001100"); sprintf(temp_phone,"%sF",phone); for(i=0;i<strlen(temp_phone);i+=2) { pdu_phone[i]=temp_phone[i+1]; pdu_phone[i+1]=temp_phone[i]; } strcat(pdu,"0D91"); strcat(pdu,pdu_phone); strcat(pdu,"0010AA"); n=code_convert("UTF8","UNICODE",msg,buf)-2; printf("n=%d,msg=%s/n",n,msg); sprintf(pdu_msg,"%.2X",n); strcat(pdu,pdu_msg); for(i=0;i<n;i+=2) { sprintf(pdu_msg+i*2,"%.2X",buf[i+3]); sprintf(pdu_msg+i*2+2,"%.2X",buf[i+2]); } strcat(pdu,pdu_msg); printf("%s/n",(pdu)); return strlen(pdu)/2-1; } int code_convert(const char * srccode,const char * dstcode,const unsigned char * inbuf,unsigned char * outbuf) { int n=0; unsigned int inbytesleft=strlen(inbuf); unsigned int outbytesleft=255; iconv_t cd_d = iconv_open(dstcode,srccode); iconv(cd_d,(char **)&inbuf,&inbytesleft,(char **)&outbuf,&outbytesleft); iconv_close(cd_d); return 255-outbytesleft; }
相关文章推荐
- GSM短信发送PDU编码解码C++控制台实现
- Python实现AT命令发送PDU短信
- GSM短信发送PDU编码解码C++控制台实现
- PDU 实现接收短信源程序
- GSM短信发送PDU编码解码C++控制台实现
- GSM MODEM AT命令 发送PDU 长短信 与 一般短信
- android后台发送短信的实现
- 举例说明android中SmsManager的用法---用来实现手机发送短信的功能
- 使用56短信网接口实现发送短信验证码
- 帮助全球开发者最短时间内实现短信发送的能力
- Delphi写的串口发送短信控件源程序
- Java实现注册时发送短信功能(网建发送)
- Android实现发送短信的功能
- Java通过SMS平台实现短信发送功能
- AT指令发送PDU短信详解
- android实现发送短信并保存到数据库,同时可以获得发送报告和接收报告
- Java实现发送短信的例子
- C#利用Web Service实现短信发送
- 利用梦网云通讯实现 短信 验证码 发送 附带教程~~~
- java 发送短信sms实现接口