当前位置: 技术问答>linux和unix
求教linux中串口发送at命令的问题 急!
来源: 互联网 发布时间:2016-12-25
本文导语: 我用如下程序发送短信,却不成功,但用minicom可以发送 #include #include #include #include #include #include #include #include #include //编码转换 #define STTY_DEV "/dev/ttyS0" #define BUFF_SIZE...
我用如下程序发送短信,却不成功,但用minicom可以发送
#include
#include
#include
#include
#include
#include
#include
#include
#include //编码转换
#define STTY_DEV "/dev/ttyS0"
#define BUFF_SIZE 512
#define MSG_SIZE 140 //一条短信的容量
char phone[20]="+861385126378"; //定义短信发送的目标手机号码
char sms_number[20]="+8613800250500"; //定义短消息服务中心号码
char sms_gb2312[MSG_SIZE]="Best Regards!"; //定义短消息内容
char sms_utf8[MSG_SIZE];
char *sms_in=sms_gb2312; //要把输入的gb2312编码转换成
char *sms_out=sms_utf8;
int gb2312_len, utf8_len;
int SetOption(int fd); //设置串口通信的参数
void TransPhone(); //转换手机号码格式
void TransSmsc(); //转换SMSC号码
int TransMsg(); //转换短信消息内容
int main()
{
int stty_fd,n;
char buffer[BUFF_SIZE];
//打开串口
stty_fd=open(STTY_DEV,O_RDWR | O_NOCTTY);
if(-1==stty_fd){
perror("open device");
return 0;
}
printf("Open device success!n");
//设置串口参数
if(0!=SetOption(stty_fd)){
close(stty_fd);
return 0;
}
printf("Set Serial option success!n");
TransPhone();
TransSmsc();
if(1!=TransMsg()){
perror("Convert ShortMsg");
close(stty_fd);
return 0;
}
printf("Message convert success!n");
//设置使用PDU模式
strcpy(buffer,"AT+CMGF=0r"); //0表示PDU示文本模式
write(stty_fd,buffer,strlen(buffer));
n=read(stty_fd,buffer,BUFF_SIZE); //向串口写入AT
printf("%sn%dn",buffer,n);
/* if(n
#include
#include
#include
#include
#include
#include
#include
#include
#include //编码转换
#define STTY_DEV "/dev/ttyS0"
#define BUFF_SIZE 512
#define MSG_SIZE 140 //一条短信的容量
char phone[20]="+861385126378"; //定义短信发送的目标手机号码
char sms_number[20]="+8613800250500"; //定义短消息服务中心号码
char sms_gb2312[MSG_SIZE]="Best Regards!"; //定义短消息内容
char sms_utf8[MSG_SIZE];
char *sms_in=sms_gb2312; //要把输入的gb2312编码转换成
char *sms_out=sms_utf8;
int gb2312_len, utf8_len;
int SetOption(int fd); //设置串口通信的参数
void TransPhone(); //转换手机号码格式
void TransSmsc(); //转换SMSC号码
int TransMsg(); //转换短信消息内容
int main()
{
int stty_fd,n;
char buffer[BUFF_SIZE];
//打开串口
stty_fd=open(STTY_DEV,O_RDWR | O_NOCTTY);
if(-1==stty_fd){
perror("open device");
return 0;
}
printf("Open device success!n");
//设置串口参数
if(0!=SetOption(stty_fd)){
close(stty_fd);
return 0;
}
printf("Set Serial option success!n");
TransPhone();
TransSmsc();
if(1!=TransMsg()){
perror("Convert ShortMsg");
close(stty_fd);
return 0;
}
printf("Message convert success!n");
//设置使用PDU模式
strcpy(buffer,"AT+CMGF=0r"); //0表示PDU示文本模式
write(stty_fd,buffer,strlen(buffer));
n=read(stty_fd,buffer,BUFF_SIZE); //向串口写入AT
printf("%sn%dn",buffer,n);
/* if(n