串口写AT命令

阅读: 评论:0

#include <stdio.h>
#include <stdlib.h>
#include <termios.h>
#include <fcntl.h>
int fd;
int open_uart()
{
fd = open("/dev/ttyUSB2", O_RDWR|O_NOCTTY|O_NDELAY);
if(fd == -1)
{
perror("open tty fail");
return -1;
}
if(fcntl(fd, F_SETFL, 0)<0)
{
perror("open , fcntl fail");
return -1;
镀层厚度检测
}
//    printf("fcntl=%d\n", fcntl(fd, F_SETFL, 0));
//    printf("fd is %d\n", fd);
/*   
if(isatty(STDIN_FILENO))
{
printf("is a tty\n");
else
{
非法请求printf("not tty\n");
}
*/   
return 0;
}
int set_uart()
{
struct termios options;
if(tcgetattr(fd, &options) != 0)
{
perror("get uart attr fail\n");
return -1;
}
cfsetispeed(&options, B19200);
10.10.0.10cfsetospeed(&options, B19200);
options.c_cflag |= CLOCAL|CREAD;
options.c_cflag &= ~CRTSCTS;
options.c_cflag &= ~CSIZE;
options.c_cflag |= CS8;
options.c_cflag &= ~PARENB;
options.c_iflag &= ~INPCK;
options.c_cflag &= ~CSTOPB;
options.c_oflag &= ~OPOST;
options.c_cc[VTIME] = 1;
options.c_cc[VMIN] = 1;
tcflush(fd, TCIOFLUSH);
if(tcsetattr(fd, TCSANOW, &options) != 0)
{
perror("uart set attr fail");
return -1;
}
return 0;
}
int read_uart()
{
fd_set fs_read;
struct timeval time;
FD_ZERO(&fs_read);
FD_SET(fd, &fs_read);
time.tv_sec = 10;
time.tv_usec = 0;
while(select(fd+1, &fs_read, 0, 0, &time) > 0)
{
int len;
char buf[1024];
len=read(fd, buf, sizeof(buf));
printf("%s", buf);
}
}防漏杯盖
int send_uart(char *str)
{
printf("send cmd:\t%s\n", str);
write(fd, str, strlen(str));
return 0;
}
int cmd_uart(char *str)
{
send_uart(str);
read_uart();
}
int main(int argc, char **argv)
{
char cmd_buf[1024];
open_uart();
涂布纸set_uart();
cmd_uart("ate\r\n");
cmd_uart("ati\r\n");
cmd_uart("at+cimi\r\n");
cmd_uart("at+cmee=2\r\n");
cmd_uart("at+csq\r\n");
cmd_uart("at+creg=1\r\n");
cmd_uart("at+creg=?\r\n");
cmd_uart("at+creg?\r\n");
cmd_uart("at+cops?\r\n");
cmd_uart("at^hcsq\r\n");
cmd_uart("ag+cgdcont=1,\"ip\",\"3gnet\"\r\n");
while(fgets(cmd_buf, sizeof(cmd_buf), stdin))
{
strcat(cmd_buf, "\r\n");
cmd_uart(cmd_buf);
}
close(fd);
return 0;
}

本文发布于:2023-06-04 20:41:24,感谢您对本站的认可!

本文链接:https://patent.en369.cn/patent/2/125966.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:镀层   深海   防漏   检测   导航
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 369专利查询检索平台 豫ICP备2021025688号-20 网站地图