2013-02-18 127 views
0

當然有termios.h,但這裏我正在談論AT指令。我希望他們得到執行如何通過C發送AT指令到串口 - Linux

如何通過在Linux 中的C發送AT命令到串口,以便它們得到執行

+0

只是將這些命令作爲文本發送。 – lqs 2013-02-18 09:56:03

+0

設備是* nix中的文件。嘗試將串行端口作爲文件打開,並從/向它讀/寫。 – 2013-02-18 09:56:11

+0

[串口讀取與C寫入]可能的重複(http://stackoverflow.com/questions/3452359/serial-port-reading-and-writing-with-c) – 2013-02-18 09:57:50

回答

3

看看這個簡單的例子(它的工作原理):

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... 
+0

謝謝,我想知道如何端口分辨在命令和文本之間。 – 2013-02-18 10:04:38

+1

這是Hayes與調制解調器進行通信的方法。它按照前面AT命令的格式進行區分。檢查下面關於Serial_Programming的答案中的鏈接 – 2013-02-18 10:14:26

+0

@DaneBalia感謝您的跟進。 – 2013-02-18 10:47:15