读书人

GSM串口编程如何实现发送:1A(十六进

发布时间: 2013-01-08 14:02:14 作者: rapoo

GSM串口编程,怎么实现发送:1A(十六进制发送)<回车>???
GSM串口编程,如何实现发送:1A(十六进制发送)<回车>

GSM串口编程,如何实现发送:1A(十六进制发送)<回车>
前面的AT指令都符合了,就差怎么发送:1A(十六进制发送)<回车>
应该怎么实现???求高手解答
附已经实现的部分代码:

int main(void)
{
int fd,flag=0;
int nread,i;
int m;

char buf[]="AT\r";
char buf1[]="AT+CMGF=1\r";
char buf2[]="AT+CSCA=+8613800773500\r";
char buf3[]="AT+CMGS=13557132924\r";
char buf4[]="hello";
char buf5[]="1A\r";

//int fd = FALSE;

int ret,ret1,ret2,ret3,ret4,ret5;

char rcv_buf[30],rcv_buf1[30],rcv_buf2[50],rcv_buf3[50],rcv_buf4[50];
char rcv_buf5[50];

int j,j1,j2,j3,j4,j5;
if((fd=open_port(fd,2))<0)
{
perror("open_port error");
return ;
}

if((i=set_opt(fd,9600,8,'N',1))<0){
perror("set_port error");
return ;
}

UART_Send(fd,buf,strlen(buf));
memset(rcv_buf,0,sizeof(rcv_buf));

for(j=0;;j++)

{

ret = UART_Recv(fd, rcv_buf,30);

if( ret > 0){

rcv_buf[ret]='\0';

printf("%s",rcv_buf);


}

if('\n' == rcv_buf[ret-1])

break;
}


UART_Send(fd,buf1,strlen(buf1));
memset(rcv_buf1,0,sizeof(rcv_buf1));

for(j1=0;;j1++)

{

ret1 = UART_Recv(fd, rcv_buf1,30);

if( ret1 > 0){

rcv_buf1[ret1]='\0';

printf("%s",rcv_buf1);


}


if('\n' == rcv_buf1[ret1-1])

break;

}
UART_Send(fd,buf2,strlen(buf2));
memset(rcv_buf2,0,sizeof(rcv_buf2));

for(j2=0;;j2++)

{

ret2 = UART_Recv(fd, rcv_buf2,50);

if( ret2 > 0){

rcv_buf2[ret2]='\0';

printf("%s",rcv_buf2);


}

if('\n' == rcv_buf2[ret2-1])



break;

}
UART_Send(fd,buf3,strlen(buf3));
memset(rcv_buf3,0,sizeof(rcv_buf3));

for(j3=0;;j3++)

{

ret3 = UART_Recv(fd, rcv_buf3,50);

if( ret3 > 0){

rcv_buf3[ret3]='\0';

printf("%s",rcv_buf3);


}
else


if('\n' == rcv_buf3[ret3-1])

break;

}
UART_Send(fd,buf4,strlen(buf4));
memset(rcv_buf4,0,sizeof(rcv_buf4));

for(j4=0;;j4++)

{

ret4 = UART_Recv(fd, rcv_buf4,20);

if( ret4 > 0){

rcv_buf4[ret4]='\0';

printf("%s",rcv_buf4);


}



if('\n' == rcv_buf4[ret4-1])

break;

}

/*UART_Send(fd,buf5,30);
memset(rcv_buf5,0,sizeof(rcv_buf5));

for(j5=0;;j5++)

{

ret5 = UART_Recv(fd, rcv_buf5,50);

if( ret5 > 0){

rcv_buf5[ret5]='\0';

printf("%s",rcv_buf5);


}

if('\n' == rcv_buf5[ret5-1])

break;

}*/

return 0;
}


[解决办法]
1A 本身就是16进制的数。char buf5[]={0x1A,0x0D,0x0A};这么定义应该就能发送了。0x0D 0x0A是\r的16进制数

读书人网 >C语言

热点推荐