Linux 序列埠程式設計
Aaron Liao 這裡我們探討 Linux 序列埠程式設計,你需要熟悉 C 語言和 Linux。 首先,用下列的程式來開啟序列埠。
int open_port(const char *pathname) {
/* open the pathname, ex. pathname="/dev/ttyACM0" */
int serial_fd = open(pathname, O_RDWR|O_NOCTTY|O_NDELAY);
/* fail to open the serial port */
if(serial_fd<0) {
if( debug ) {
printf("%s: fail to open [%s].\n", __func__, pathname);
}
return -1;
}
printf("%s: %s, serial_fd: %3d\n", __func__, pathname, serial_fd);
// enable the nonblocking mode for reading.
fcntl(serial_fd, F_SETFL, FNDELAY);
return serial_fd;
}接著透過 file descriptor(檔案描述子)設定序列埠。
之後的部分,如讀寫則與一般網路程式設計大同小異,可利用 descriptor 進行讀寫,以及透過 select() 函式之類的方式檢查 serial port 是否有資料可讀寫。 select() 的使用請參考 Beej's Guide to Network Programming 正體中文版的第七章。
參考文獻
[1] Michael Kerrisk, The Linux Programming Interface, 2010. [2] Michael R. Sweet, Serial Programming Guide for POSIX Operating Systems, 5th Edition.
Last updated