gpt4 book ai didi

通过Android模拟器无法读取但可以写入串口

转载 作者:行者123 更新时间:2023-11-30 17:44:49 25 4
gpt4 key购买 nike

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

emulator -qemu -serial /dev/ttyUSB0

模拟器能够打开端口并写入。但是,读取并未发生。

程序有一个由定时器维护的读取超时。读取发生在单独的“读取”线程中。主线程有一个 socketpair fd 对,用于向读取线程发出信号,表明串口在超时后已关闭。在读取线程中,对 2 个文件描述符进行轮询(poll() 函数调用):一个是串行端口 fd,另一个是套接字对之一。

我连接的主板可以通过“cutecom”发送命令,工作正常

串行端口的轮询永远不会成功。但是,“socketpair”fd 的轮询成功,并且线程在超时后从主线程发送的关闭信号上结束。

问题:

  1. 即使环回失败,是否有任何特殊的读取设置
  2. 串行端口上的读取和写入设置是否存在差异?

最佳答案

struct termios 设置对于 ioctl 调用是必须的。以下更改使我的读取调用正常工作!仍然不确定 write 调用是如何成功的......

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

关于通过Android模拟器无法读取但可以写入串口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19834279/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com