Android (Студия) + Dragino LA66 USBAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Android (Студия) + Dragino LA66 USB

Сообщение Anonymous »

Я работаю над приложением для Android для управления дроном. Для связи я использую устройство Dragino LA66 USB LoRa. К сожалению, у меня возникли трудности с передачей сигнала на мою плату Arduino.
Плата Arduino подключена к Arduino IDE для представления информации, полученной через LoRa.
Изначально я создал код Android Studio (Java) на основе последовательного COM-порта. У меня есть приложение, распознающее, что USB-устройство подключено, но когда я отправляю данные (или пытаюсь), на Arduino ничего не появляется. Вот код для моего последовательного порта:

Код: Выделить всё

public static void sendComm(String msg) {
byte[] msgBuff = msg.getBytes();
int msgLen = msgBuff.length;

if (serialPort != null) {
try {
serialPort.write(msgBuff, msgLen);
} catch (IOException e) {
e.printStackTrace();
}
}
}
Далее я попробовал работать с кодом из примера приложения из Dragino, но, похоже, в основном это протоколирование информации, и, опять же, никакой связи не наблюдается.
При настройке USB-соединения я использую:

Код: Выделить всё

for (UsbDevice device : deviceList.values()) {
PendingIntent permissionIntent = PendingIntent.getBroadcast(this, 0, new Intent("com.aidan.dronecontroller.USB_PERMISSION"), PendingIntent.FLAG_IMMUTABLE);

if (device.getVendorId() == 4292 && device.getProductId() == 60000) {
usbManager.requestPermission(device, permissionIntent);

if (usbManager.hasPermission(device)) {
GlobalState.getInstance().setUSBConnected(true);
}
}

la66 = device;
}
Вышеуказанное выполняется сразу после onCreate() в приложении. Для открытия реального последовательного порта я использую:

Код: Выделить всё

private void openSerialPort(UsbDevice device) {
UsbDeviceConnection connection = usbManager.openDevice(device);
UsbSerialDriver driver = UsbSerialProber.getDefaultProber().probeDevice(device);

if (driver == null) {
// Try a more aggressive probe
driver = UsbSerialProber.getDefaultProber().probeDevice(device);
}

if (driver != null) {
UsbSerialPort port = driver.getPorts().get(0);

try {
port.open(connection);
port.setParameters(
9600, // baud rate
8,      // data bits
UsbSerialPort.STOPBITS_1,
UsbSerialPort.PARITY_NONE
);

serialPort = port;

}
catch (IOException e) {
e.printStackTrace();
}
}

la66Msg = "AT+FRE="+freq+","+freq;
sendComm(la66Msg);

la66Msg = "AT+BW="+bw+","+bw;
sendComm(la66Msg);

la66Msg = "AT+SF="+sf+","+sf;
sendComm(la66Msg);

la66Msg = "AT+CR="+cr+","+cr;
sendComm(la66Msg);
}
la66Msg закодирован с использованием кодов AT+, которые использует USB-трансивер. Эти коды взяты из общей пользовательской информации о Dragino, и я предполагаю, что они являются частью набора микросхем, соединяющего USB с радиочипом LoRa. Эти команды отправляются с использованием функции sendComm, или это и есть цель.
Я вообще не знаком с интерфейсом аппаратного и программного обеспечения, так что это то, с чем я борюсь. Есть ли понимание того, что я делаю неправильно? Есть идеи, как лучше/правильно это закодировать?
Спасибо.

Подробнее здесь: https://stackoverflow.com/questions/798 ... o-la66-usb
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»