gpt4 book ai didi

Android Things 3 无法从 Raspberry PI 3 上的 rxtx 读取

转载 作者:行者123 更新时间:2023-11-30 00:36:22 25 4
gpt4 key购买 nike

我有一个 Arduino 配置为继续在 TX 端口上写东西,它连接到我的带有 Android Things Developer preview 3 的 Raspberry Pi 3(我确信 RX/TX 电缆配置正确并且电压正常)。

我尝试了很长时间来使用 Android Things 库的 PeripheralManagerService 读取数据和写入数据。

启动应用程序时出现错误:

04-11 16:26:13.665 163-163/? I/peripheralman: type=1400 audit(0.0:44): avc: denied { read write } for name="ttyAMA0" dev="tmpfs" ino=1203 scontext=u:r:peripheralman:s0 tcontext=u:object_r:device:s0 tclass=chr_file permissive=1

04-11 16:26:13.665 163-163/? I/peripheralman: type=1400 audit(0.0:45): avc: denied { open } for path="/dev/ttyAMA0" dev="tmpfs" ino=1203 scontext=u:r:peripheralman:s0 tcontext=u:object_r:device:s0 tclass=chr_file permissive=1

04-11 16:26:13.665 163-163/? I/peripheralman: type=1400 audit(0.0:46): avc: denied { ioctl } for path="/dev/ttyAMA0" dev="tmpfs" ino=1203 ioctlcmd=5401 scontext=u:r:peripheralman:s0 tcontext=u:object_r:device:s0 tclass=chr_file permissive=1

我的代码:

public class MainActivity extends Activity {

private final int BUFFER_SIZE = 64;
private UartDevice rxtx;


public void configureUartFrame(UartDevice uart) throws IOException {
// Configure the UART port
uart.setBaudrate(9600);
}

public void writeUartData(UartDevice uart, String msg) throws IOException {
byte[] buffer = msg.getBytes();
int count = uart.write(buffer, buffer.length);
Log.d(TAG, "Wrote " + count + " bytes to peripheral");
}

public void readUartBuffer(UartDevice uart) throws IOException {
byte[] buffer = new byte[BUFFER_SIZE];
int count;
while ((count = uart.read(buffer, buffer.length)) > 0) {
Log.d(TAG, "Read " + count + " bytes from peripheral");
Log.d("Message", new String(buffer));
}
}

@Override
protected void onStart() {
super.onStart();
try {
writeUartData(rxtx, "teste");
readUartBuffer(rxtx);
} catch (IOException e) {
e.printStackTrace();
}
}

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

PeripheralManagerService manager = new PeripheralManagerService();

manager.getUartDeviceList();
List<String> portList = manager.getUartDeviceList();

if (portList.isEmpty()) {
Log.i(TAG, "No UART port available on this device:");
} else {
Log.i(TAG, "List of RXTX available ports: - " + portList);
}

try{
rxtx = manager.openUartDevice(portList.get(0));
configureUartFrame(rxtx);
}catch (IOException e){
e.printStackTrace();
}
}}

有人知道它会是什么吗?

最佳答案

我在您的代码中没有看到任何地方注册了 UartDeviceCallback。您如何轮询 UART 以获取新的传入数据?如果没有注册回调,您的应用程序将需要通过 UartDevice.read() 定期轮询 UART 以获取新的传入字节,我也没有在您的代码中看到这一点。唯一似乎被调用的地方是在 onStart() Activity 回调中。

回调是一种更有效的方法,所以我建议添加它。有关详细信息,请查看 UART Peripheral I/O Guide .

关于Android Things 3 无法从 Raspberry PI 3 上的 rxtx 读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43351645/

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