我正在开发一个通过Android模拟器通过USB串口通信的程序。
emulator -qemu -serial /dev/ttyUSB0
模拟器可以打开端口并写入端口。但是,没有发生阅读。
程序具有由计时器维护的读取超时。读取发生在单独的“读取”线程中。主线程有一个 socketpair
fd对,用于通知读取线程在超时后串口关闭。在读线程中,轮询在2个文件描述符上发生(poll()
函数调用):一个是串口fd,另一个是socketpair。
我连接的主板可以通过'cutecom'
发送命令。民意调查从未成功进行串口。但是,轮询成功'socketpair'ed fd,并且线程以主线程超时后发送的关闭信号结束。
Ouestions :
答案 0 :(得分:0)
struct termios设置是ioctl调用必须的。以下更改使我的阅读通话正常工作!仍然不确定写电话是如何成功的......
struct termios termios;
int ret;
tcflush(fd, TCIOFLUSH);
tcgetattr(fd, &termios);
cfmakeraw(&termios);
termios.c_cflag |= (CLOCAL | CREAD | CRTSCTS | CS8);
tcsetattr(fd, TCSANOW, &termios);
/* tcgetattr(fd, &termios); */
tcflush(fd, TCIOFLUSH);