0
當我嘗試讀取我的linux設備上的串行接口時,出現問題。 這是我打開我的端口:從Linux下的C++中的串行接口讀取字節的問題
string port = /dev/ttyMFD1;
struct termios tio;
struct termios stdio;
fd_set rdset;
memset(&stdio, 0, sizeof(stdio));
stdio.c_iflag = 0;
stdio.c_oflag = 0;
stdio.c_cflag = 0;
stdio.c_lflag = 0;
stdio.c_cc[VMIN] = 1;
stdio.c_cc[VTIME] = 0;
tcsetattr(STDOUT_FILENO, TCSANOW, &stdio);
tcsetattr(STDOUT_FILENO, TCSAFLUSH, &stdio);
fcntl(STDIN_FILENO, F_SETFL, O_NONBLOCK);
memset(&tio, 0, sizeof(tio));
tio.c_iflag = 0;
tio.c_oflag = 0;
tio.c_cflag = CS8 | CREAD | CLOCAL;
tio.c_lflag = 0;
tio.c_cc[VMIN] = 1;
tio.c_cc[VTIME] = 2;
serial_port = open(port.c_str(), O_RDWR | O_NONBLOCK);
cfsetospeed(&tio, B115200);
cfsetispeed(&tio, B115200);
tcsetattr(serial_port, TCSANOW, &tio);
現在我寫下面的代碼端口(載於「STR」十六進制值):
char str[] = { 0xAA, 0x00, 0x3D, 0x01, 0x0C, 0x00 };
write(serial_port, str, strlen(str));
現在我想要得到的迴應從我的UART連接芯片:
while(1)
{
unsigned char theByte;
int n = 0;
n = read(serial_port, theByte, 1);
cout << theByte << "\n" ;
usleep(100000);
}
當我調試時,返回值是沒有用的。當我與調試終端連接,並做了
OD -x <的/ dev/ttyMFD1
然後在控制檯上的輸出是好的。但我沒有得到任何打印的十六進制值如果我在調試時查看「theByte」。
謝謝!我愛指針:-( – Christoph
@Christoph,你可能會考慮接受答案,如果它解決了你的問題。 –