【问题标题】:How to send AT commands to serial port through C - Linux如何通过 C 向串口发送 AT 命令 - Linux
【发布时间】:2013-02-18 09:44:19
【问题描述】:

当然有termios.h,但这里我说的是AT 命令。我希望他们得到执行

如何在Linux中通过C向串口发送AT命令以便执行

【问题讨论】:

  • 只需将这些命令作为文本发送。
  • 设备是 *nix 中的文件。尝试将串行端口作为文件打开并从中读取/写入。

标签: c linux serial-port at-command


【解决方案1】:

看看这个简短的例子(它有效):

struct termios options;
int fd;

fd = open("/dev/ttyS0", O_RDWR | O_NOCTTY | O_NDELAY);

if (fd < 0)
{
    printf("Error opening serial port\n");
    exit(1);
}

bzero(&options, sizeof(options));
options.c_cflag = B9600 | CS8 | CLOCAL | CREAD | IGNPAR;
tcflush(fd, TCIFLUSH);
tcsetattr(fd, TCSANOW, &options);

if (write(fd, "ATZ\r", 4) < 4)
{
    printf("Write error - %s \n", strerror(errno));
    exit (1);
}

// read back for OK or KO then do your stuff...

【讨论】:

  • 谢谢,我想知道端口如何区分命令和文本。
  • 这是与调制解调器通信的 Hayes 方法。它通过前置 AT 命令的格式进行区分。检查下面关于 Serial_Programming 的答案中的链接
  • @DaneBalia 感谢您的跟进。
【解决方案2】:

偶然发现,可能会有所帮助:

http://en.wikibooks.org/wiki/Serial_Programming/Serial_Linux

也是 C 语言高级 Linux 编程的权威指南 http://www.advancedlinuxprogramming.com/alp-folder/

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-10-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-30
  • 2021-11-26
相关资源
最近更新 更多