Android: связь через Bluetooth Serial (Com Port) с телефоном Android - PullRequest
2 голосов
/ 19 февраля 2011

Я пытаюсь установить связь с программируемым Bluetooth микроконтроллером. Устройство Bluetooth на микроконтроллере обменивается данными (в частности) с последовательным COM-портом Bluetooth номер 4.

ВОПРОС: Как заставить приложение Android считывать данные с этого COM-порта (номер 4)?

Я знаю, что UUID - это хорошо известный уникальный идентификатор, который работает для этого устройства, но я не думаю, что он имеет какое-либо отношение к указанию COM-порта.

static final UUID myUUID = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB");
btSocket = btDevice.createRfcommSocketToServiceRecord( myUUID);
btSocket.connect();
valid.append( btDevice.getName() + "\n" + btDevice.getAddress());
north.append("Socket Connected");
InputStream mmInStream = btSocket.getInputStream();
OutputStream mmOutStream = btSocket.getOutputStream();
byte[] buffer = new byte[10];
int bytes;
StringBuffer str = new StringBuffer();
while (true)                            {                               
     try {
    mmOutStream.write("a".getBytes());

        //Reads a # of bytes until the end of stream is reached
        bytes = mmInStream.read(buffer);
        //Transform to string
                str.append(buffer.toString()+"\t");                         //Clear the buffer
        Log.e("DATA", "THE DATA: "+ str.toString());
        south.setText(str.toString());
         str.delete(0,str.length());
       } catch (IOException e) {
        break;
} }}

Ответы [ 2 ]

3 голосов
/ 17 февраля 2012

COM-порт существует только на микроконтроллере, а не на подключенном к нему устройстве Bluetooth. Устройство Bluetooth даже не знает, какой COM-порт микроконтроллер использовал для подключения к нему. Подключение устройства Bluetooth к микроустройству осуществляется через линии TX и RX. Тот факт, что они прикреплены к контактам на микроустройстве, назначенному определенному COM-порту, не имеет значения и неизвестен для устройства Bluetooth.

1 голос
/ 19 февраля 2011

У меня была эта проблема с пользовательским устройством Bluetooth, которое я собрал. Вместо использования createRfcommSocketToServiceRecord в вашем потоке подключения попробуйте что-то похожее на следующее:

    public ConnectThread(BluetoothDevice device) throws 
        SecurityException, NoSuchMethodException, IllegalArgumentException, 
          IllegalAccessException, InvocationTargetException {
            mmDevice = device;
            BluetoothSocket tmp = null;

            // Force a BluetoothSocket for a connection with the
            // given BluetoothDevice

            Method m = mmDevice.getClass().getMethod("createRfcommSocket", 
                           new Class[]{int.class});

        mmSocket = (BluetoothSocket)m.invoke(mmDevice, Integer.valueOf(1));
    }

Где мой mmDevice - твой btDevice.

Это вызывает сокет соединения между неизвестным устройством и смартфоном. Из того, что я слышал, в Android есть проблема с подключением «не похожих» устройств. Стоит выстрел.

...