BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / embedded-system / #9932同步于 2010/12/2
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Embedded_System机器人发帖

linux串口接收AT命令的短信,总接收不到,求高手赐教 急急急!

weiyanan10
2010/12/2镜像同步1 回复
这是我编写的串口接收程序,可接收不到短信,哪错了呢? #include<sys/types.h> #include<sys/stat.h> #include<fcntl.h> #include<termios.h> #include<stdio.h> #include<string.h> #include<stdlib.h> #include<error.h> #include<unistd.h> #include<iconv.h> #define BAUDRATE B38400 #define MODEMDEVICE "/dev/s3c2410_serial1" #define BUFFER_SIZE 512 int main( ) { int i=0; int fd,c=0,res; struct termios oldtio,newtio; char buf[BUFFER_SIZE]; char mod0[50]; char mod1[50]; char mod2[50]; printf("Start...\n"); /*打开PC机的COM1通信端口*/ fd=open(MODEMDEVICE,O_RDWR | O_NOCTTY); if(fd<0) { perror(MODEMDEVICE); exit(1); } printf("open...\n"); /*将目前终端机的结构保存至oldtio结构*/ tcgetattr(fd,&oldtio); /*清除newtio结构,重新设置通信协议*/ bzero(&newtio,sizeof(newtio)); /*通信协议设为8N1*/ newtio.c_cflag =BAUDRATE |CS8|CLOCAL|CREAD; newtio.c_iflag=IGNPAR; newtio.c_oflag=0; /*设置为正规模式*/ newtio.c_lflag=ICANON; /*清除所有队列在串口的输入*/ tcflush(fd,TCIFLUSH); /*新的termios的结构作为通信端口的参数*/ tcsetattr(fd,TCSANOW,&newtio); printf("Reading...\n"); sprintf(mod0,"AT\r\n"); write(fd,mod0,strlen(mod0)); sprintf(mod1,"AT+CMGF=0\r\n"); write(fd,mod1,strlen(mod1)); sprintf(mod2,"AT+CMGL=1\r\n"); write(fd,mod2,strlen(mod2)); while(1) { res=read(fd,buf,BUFFER_SIZE); printf("res=%d,buf=%s\n",res,buf); } close (fd); return 0; }
订阅后,新回复会通过你的通知中心匿名送达。
1 条回复
heartofbupt机器人#1 · 2010/12/11
以前遇到过 修改内核 将串口的console去掉 应为这个console 和你的收发数据会造成冲突 不同平台上这种冲突造成的后果也是不同