0
我已經運行了以下代碼,並且它一直運行。但是,它似乎並沒有等待任何輸入,而且我從緩衝區獲得的唯一輸出是「\ 377」,我一直在閱讀通過POSIX操作系統的串行編程指南並嘗試使用其中提供的一些建議,但我認爲在我的配置中可能會拋棄它。任何想法將不勝感激。C++,Mac OS X中的串行端口問題10.6.8
#include <iostream>
using namespace std;
#include <stdio.h> /* Standard input/output definitions */
#include <string.h> /* String function definitions */
#include <unistd.h> /* UNIX standard function definitions */
#include <fcntl.h> /* File control definitions */
#include <errno.h> /* Error number definitions */
#include <termios.h> /* POSIX terminal control definitions */
int open_port() {
int fd; //Descriptor for the port
fd = open("/dev/tty.usbmodemfa141", O_RDWR | O_NOCTTY | O_NDELAY);
if (fd == -1) {
cout << "Unable to open port. \n";
}
else {
cout << "Port opened.\n";
}
cout << "Descriptor in open:";
cout << fd;
cout << "\n";
return fd;
}
int configure_port (int fd) {
struct termios options;
tcgetattr(fd, &options);
cfsetispeed(&options, B9600);
cfsetospeed(&options, B9600);
options.c_cflag &= ~PARENB;
options.c_cflag &= ~CSTOPB;
options.c_cflag &= ~CSIZE;
options.c_cflag |= CS8;
options.c_cflag |= (CLOCAL | CREAD);
tcsetattr(fd, TCSANOW, &options);
cout << "Port configured.\n";
return (fd);
}
void read_data(int fd) {
cout << "Reading data from: ";
cout << fd;
cout << "\n";
char buffer;
buffer = fcntl(fd, buffer, 0);
cout << "Buffer: ";
cout << buffer;
cout << "\n";
}
int main (int argc, char * const argv[]) {
int fd; //Descriptor for the port
fd = open_port();
configure_port(fd);
cout << "Descriptor: ";
cout << fd;
cout<< "\n";
read_data(fd);
cout << "Data read.";
return 0;
}