marimir Ответов: 1

Получите данные от счетчика электроэнергии по протоколу IEC62056 через bluetooth


Я разрабатываю приложение для android.Мне нужно получить данные от счетчика с помощью оптического зонда через bluetooth. Как я знаю, я должен подключиться к зонду с помощью bluetooth и отправить ему какой-то запрос для получения значений счетчика. Пожалуйста, если кто-нибудь знает, как это сделать .. Помоги мне. Я использовал BluetoothSocket, Outputstream и inputstream, но безуспешно!

Что я уже пробовал:

bluetoothSocket = device.createRfcommSocketToServiceRecord(myUUID);

inputStearm = bluetoothSocket .getInputStream();
             outputStream = bluetoothSocket .getOutputStream();

1 Ответов

Рейтинг:
2

Wessel Beulink

Прежде всего, вы обновили манифест с правильными разрешениями?
Необходимо было включить следующие разрешения:

<manifest ... >
  <uses-permission android:name="android.permission.BLUETOOTH" />
  <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
  <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
  ...
</manifest>

Прежде чем перейти к следующему этапу, убедитесь, что устройство уже подключено.
Вы можете просто проверить парное состояние с помощью:
if(device.getBondState()==device.BOND_BONDED)

Получите правильный UUID(пример):
private static final UUID MY_UUID = UUID.fromString("0000110E-0000-1000-8000-00805F9B34FB");

Вы должны быть в состоянии получить сокет в этот момент.
mSocket = device.createInsecureRfcommSocketToServiceRecord(MY_UUID);

Читать розетку:
mSocket.connect();
InputStream input = mSocket.getInputStream();
DataInputStream dinput = new DataInputStream(input);

Вы можете прочитать его позже с помощью:
dinput.readFully(byteArray, 0, byteArray.length);


marimir

Спасибо за ответ.. Я уже тестировал этот код раньше, но приложение на самом деле останавливается на линии:
DataInputStream dinput = новый DataInputStream(input);

Wessel Beulink

Каков входной результат, вы можете отладить результат?

marimir

нет, приложение остановилось на линии, и я вообще не могу получить данные из inputstream!

Wessel Beulink

Поставьте попробовать и поймать вокруг него, попробуйте получить исключение.
Разве logcat не показывает отчет о сбое?

marimir

Я поставил try catch, но это просто какой-то долгий процесс. в logcat нет сбоя, и через некоторое время приложение останавливается

Wessel Beulink

Как насчет устройства Bluetooth, можно ли протестировать устройство с помощью существующего приложения/инструмента?
Иногда случается так, что соединение с устройством выходит из строя без веской причины. Иногда может быть полезен перезапуск обоих устройств.

marimir

нет оба работают

marimir

извините, мое приложение останавливается, когда я хочу читать из входного потока с помощью bufferreader