|
RT——代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <termios.h>
#include <unistd.h>
#include <fcntl.h>
#include <errno.h>
#include <sys/ioctl.h>
#define UART0_DEV "/dev/ttyS0"
int msg_send(int fd)
{
int ret;
//char msg[]=;
if(ret = write(fd,"AT+CMGF?\r",9) < 0)
{
sleep(1);
printf("1 write error\n");
}
printf("1 write OK\n");
if(ret = write(fd,"AT+CMGF=0\r",10) < 0)
{
printf("11 write error\n");
}
sleep(1);
printf("2 write OK\n");
if(ret = write(fd,"AT+CMGS=67\r",11) < 0)
{
printf("2 write error\n");
}
sleep(1);
printf("3 write OK\n");
if(ret = write(fd,"0891683108703305F011000D91688109373308F50008903460A876848D3591CD726954C188AB4EBA53D68D70FF0C8BF753CA65F6786E8BA453BB5411FF0C4EE596324E2259313002000D000A",152) < 0 ) {
printf("3 write error\n");
}
printf("4 write OK\n");
if(ret = write(fd,"\x1a",1) < 0)
{
printf("4 write error\n");
}
sleep(1);
printf("5 write OK\n");
}
int main(int argc, char *argv[])
{
struct termios old,newter;
int fd;
fd = open(UART0_DEV,O_RDWR|O_NOCTTY);
if (fd<0){
printf("open %s error!\n",UART0_DEV);
exit(1);
}
printf("open %s OK!major is %d\n",UART0_DEV,fd);
//--------------------initialization----------------------------//
tcgetattr(fd,&old);//从fd取出信息,先保存在old中
memcpy(&newter,&old,sizeof(struct termios));//old的信息拷贝到newter中
cfmakeraw(&newter);
newter.c_cc[VTIME]=0;
newter.c_cc[VMIN]=0;
cfsetispeed(&newter,B9600);//设置输入,输出 波特率
cfsetospeed(&newter,B9600);
tcflush(fd,TCIFLUSH);
if( (tcsetattr(fd,TCSANOW,&newter))!=0)
{printf("write error\n");}
printf("OK\n");
msg_send(fd);
}
问题:
在PC机连接GSM时可以发送短信,但是改为开发板连接GSM就不行了,当然代码中/dev/ttyS0改为了/dev/tq2440_serial0,还有/etc/inittab中tq2440_serial0::askfirst:-/bin/sh没改。
为什么不行了?
顺便提下/dev/tq2440_serial1,/dev/tq2440_serial2可以不用到吧?? |
|