首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

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

2013-01-08 
GSM串口编程,怎么实现发送:1A(十六进制发送)回车???前面的AT指令都符合了,就差怎么发送:1A(十六进制发送

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进制数

热点排行