Arduino - передача данных Android через проблему сокета HC-06 - PullRequest
0 голосов
/ 17 сентября 2018

Вечерние коллеги-программисты, я относительно новичок в Android Studio, и я впервые имею дело с Bluetooth, приемниками, трансляциями и тому подобным. Я следовал некоторым учебникам и создал свое приложение для мониторинга, которое должно считывать данные, отправленныеМодуль HC-06 от Arduino, но у меня был насос с потоком подключения, он продолжает перехватывать socket.close () вместо попытки socket.connect (), и я понятия не имею, почему это происходит .. вот коддля моего ConnectThread.run ():

public ConnectThread(BluetoothDevice device, UUID uuid) {
        Log.d(TAG, "ConnectThread: started.");
        mmDevice = device;
        deviceUUID = uuid;
    }

    public void run(){
        BluetoothSocket tmp = null;
        Log.i(TAG, "RUN mConnectThread ");

        // Get a BluetoothSocket for a connection with the
        // given BluetoothDevice
        try {
            Log.d(TAG, "ConnectThread: Trying to create InsecureRfcommSocket 
using UUID: "
                    +MY_UUID_INSECURE );
            tmp = mmDevice.createRfcommSocketToServiceRecord(deviceUUID);
        } catch (IOException e) {
            Log.e(TAG, "ConnectThread: Could not create InsecureRfcommSocket 
" + e.getMessage());
        }

        mmSocket = tmp;

        // Always cancel discovery because it will slow down a connection
        mBluetoothAdapter.cancelDiscovery();

        // Make a connection to the BluetoothSocket

        try {
            // This is a blocking call and will only return on a
            // successful connection or an exception
            mmSocket.connect();

            Log.d(TAG, "run: ConnectThread connected.");
        } catch (IOException e) {
            // Close the socket
            try {
                mmSocket.close();
                Log.d(TAG, "run: Closed Socket.");
            } catch (IOException e1) {
                Log.e(TAG, "mConnectThread: run: Unable to close connection 
in socket " + e1.getMessage());
            }
            Log.d(TAG, "run: ConnectThread: Could not connect to UUID: " + 
MY_UUID_INSECURE );
        }


        connected(mmSocket,mmDevice);
    }

И выброшенное исключение:

D/BluetoothSocket: close() this: android.bluetooth.BluetoothSocket@3390c6f, mSocketState: INIT
D/BluetoothConnectionServ: run: Closed Socket.
run: ConnectThread: Could not connect to UUID: 00001101-0000-1000-8000-00805f9b34fb
connected: Starting.

Тем не менее, connectedThread продолжает работать, даже когда сокет закрыт, idk, если он работает, но вот это ConnectedThread.run ():

public void run(){
        byte[] buffer = new byte[1024];  // buffer store for the stream

        int bytes; // bytes returned from read()

        // Keep listening to the InputStream until an exception occurs
        while (true) {
            // Read from the InputStream
            try {
                bytes = mmInStream.read(buffer);
                String incomingMessage = new String(buffer, 0, bytes);
                Log.d(TAG, "InputStream: " + incomingMessage);

                Intent incomingMessageIntent = new Intent("incomingMessage");
                incomingMessageIntent.putExtra("theMessage",incomingMessage);
                LocalBroadcastManager.getInstance(mContext).sendBroadcast(incomingMessageIntent);

            } catch (IOException e) {
                Log.e(TAG, "write: Error reading Input Stream. " + e.getMessage() );
                break;
            }
        }
    }

и его исключения:

D/BluetoothConnectionServ: ConnectedThread: Starting.
E/BluetoothConnectionServ: write: Error reading Input Stream. socket closed
...