C程序实现AT命令获取

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/time.h>
#include <fcntl.h>
#include <termios.h>
#include <errno.h>
#include <pthread.h>
#include <string.h>
#include<stdbool.h>
#include <termios.h>

int main(){
int fd;
struct termios options;

    /* open the port */
    fd = open("/dev/ttyUSB3", O_RDWR | O_NOCTTY | O_NDELAY);
    if (fd == -1)
    { 
            /* Could not open the port */
            fprintf(stderr, "open_port: Unable to open /dev/ttyS1 - %s\n",strerror(errno));
    }else{
            printf("/dev/ttyUSB3 port opened\n");
    }

    fcntl(fd, F_SETFL, 0);

    /* get the current options */
    tcgetattr(fd, &options);

    /* set raw input, 1 second timeout */
    options.c_cflag |= (CLOCAL | CREAD);
    options.c_lflag &= ~(ICANON | ECHO | ECHOE | ISIG);
    options.c_oflag &= ~OPOST;
    options.c_cc[VMIN] = 0;
    options.c_cc[VTIME] = 10;

    /* set the options */
    tcsetattr(fd, TCSANOW, &options);
    char buffer[400]; /* Input buffer */
    char *bufptr; /* Current char in buffer */
    int nbytes; /* Number of bytes read */
    int tries; /* Number of tries so far */
    for (tries = 0; tries < 1; tries ++)
    {
            /* send an AT command*/
            //if (write(fd, "AT+CMGL=\"ALL\"\r", strlen("AT+CMGL=\"ALL\"\r")) < 3)
            if (write(fd, "AT+CIMI\r", strlen("AT+CIMI\r")) < 3)
            {
                    printf("command sent failed!\n");
                    continue;
            }

            /* read characters into our string buffer*/
            bufptr = buffer;
            nbytes = read(fd, bufptr, buffer + sizeof(buffer) - bufptr - 1);
            printf("%s\n",bufptr);

            char *p;
            p = strstr(buffer, "tin");
            printf("%s",p);
            p = strstr(buffer, "server");
            if(p == NULL) 
            {
                    printf("not from server\n");
            }
            *bufptr = '\0';
    }
    return 0;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

weixin_45555543

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值