无法读取但可以通过Android Emulator在串口上写入

时间:2013-11-07 11:04:14

标签: c android-emulator serial-port

我正在开发一个通过Android模拟器通过USB串口通信的程序。

emulator -qemu -serial /dev/ttyUSB0

模拟器可以打开端口并写入端口。但是,没有发生阅读。

程序具有由计时器维护的读取超时。读取发生在单独的“读取”线程中。主线程有一个 socketpair fd对,用于通知读取线程在超时后串口关闭。在读线程中,轮询在2个文件描述符上发生(poll()函数调用):一个是串口fd,另一个是socketpair。

我连接的主板可以通过'cutecom'

发送命令。

民意调查从未成功进行串口。但是,轮询成功'socketpair'ed fd,并且线程以主线程超时后发送的关闭信号结束。

Ouestions

  1. 是否有任何特殊设置可供读取,因为偶数环回失败
  2. 串口上的读写设置有区别吗?

1 个答案:

答案 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);