Je tente de communiquer avec un en-tête Pi à l'aide d'Android Things Developer Preview 5. Ci-dessous la classe que j'ai créée pour communiquer avec l'en-tête officiel. Vos documents:Problèmes de communication avec l'en-tête UART sur Android Things Developer Preview 5 (RPI3)
public class UartComm {
private static final String UART_DEVICE_NAME = "UART1";
private UartDevice mDevice;
private void configureUartFrame(UartDevice uart) throws IOException {
// Configure the UART port
uart.setBaudrate(115200);
}
public void onCreate() {
try {
PeripheralManagerService manager = new PeripheralManagerService();
List<String> deviceList = manager.getUartDeviceList();
if (deviceList.isEmpty()) {
Log.i(TAG, "No UART port available on this device.");
} else {
Log.i(TAG, "List of available devices: " + deviceList);
}
mDevice = manager.openUartDevice(UART_DEVICE_NAME);
configureUartFrame(mDevice);
mDevice.registerUartDeviceCallback(mUartCallback);
} catch (Exception e) {
Log.w(TAG, "Unable to access UART device", e);
}
}
public void readUartBuffer(UartDevice uart) throws IOException {
// Maximum amount of data to read at one time
final int maxCount = 40;
byte[] buffer = new byte[maxCount];
uart.read(buffer, maxCount);
String data = new String(buffer, "UTF-8");
Log.d(TAG, data);
}
private UartDeviceCallback mUartCallback = new UartDeviceCallback() {
@Override
public boolean onUartDeviceDataAvailable(UartDevice uart) {
// Read available data from the UART device
try {
readUartBuffer(uart);
} catch (IOException e) {
Log.w(TAG, "Unable to access UART device", e);
}
// Continue listening for more interrupts
return true;
}
@Override
public void onUartDeviceError(UartDevice uart, int error) {
Log.w(TAG, uart + ": Error event " + error);
}
};
}
Dans mon MainActivity je crée une instance de UartComm en faisant UartComm device = new UartComm()
et appeler procéder device.onCreate()
J'ai également modifié /boot/cmdline.txt
et enlevé la console = serial0,115200 et remplacé par console = tty0, j'ai aussi o essayé simplement de supprimer la ligne de console sans ajouter console = tty0. En /boot/config.txt
J'ai également supprimé enable_uart=1
et core-freq=400
et également ajouté dtoverlay=pi3-miniuart-bt
J'ai également essayé de supprimer complètement le support de Bluetooth en faisant dtoverlay=pi3-disable-bt
en vain.
J'ai testé que l'en-tête fonctionne et est configuré correctement dans Rapsbian, où j'ai échangé/dev/ttyAMA0 et/dev/ttyS0 et cela a fonctionné correctement. J'ai été capable d'exécuter la commande screen
sur Raspbian avec un débit en bauds par défaut de 115200 et j'ai pu obtenir les informations désirées.
Je voudrais faire la même chose dans Android Things Developer Preview 5 et avoir le Bluetooth sur le mini-uart ttyS0 et l'en-tête sur ttyAMA0. Mon résultat souhaité est que l'en-tête soit accessible via UART0.
Un ancien périphérique série USB qui a la même fonctionnalité fonctionne, mais je préférerais que le périphérique UART soit physiquement au-dessus du Pi, ce n'est donc pas une option.
Souhaitez-vous étiqueter une langue? Cela pourrait attirer le bon type de réponses. – Yunnosch
Juste étiqueté Java –