Как отправить данные с Android на Arduino в Xamarin. Android с использованием SPP с HC - 06 - PullRequest
0 голосов
/ 19 декабря 2018

В настоящее время я могу читать данные, отправленные на телефон Android из Arduino, но я ничего не получаю на конце Arduino, когда пытаюсь отправить данные.

Ниже приведен мой класс BluetoothManager, который создается и устанавливаетсявверх в основной деятельности.Затем вызывается метод .sendDataToDevice (String data) с данными, которые вы хотите отправить.Я немного искал в интернете, но у меня возникли проблемы с поиском примеров, близких к настройке этого кода.Я думаю, что я, вероятно, что-то не так с выходным потоком, но я не уверен.Любая помощь будет оценена!

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using Android.App;
using Android.Bluetooth;
using Android.Content;
using Android.OS;
using Android.Runtime;
using Android.Views;
using Android.Widget;
using Java.IO;
using Java.Util;

namespace BluetoothTest
{
    class BluetoothManager
    {
        //Unique ID which helps us connect to any device 
        private const string UuidUniverseProfile = "00001101-0000-1000-8000-00805f9b34fb";
        //Represent bluetooth data coming from UART
        private BluetoothDevice result;
        //get input/output stream of this comunication
        private BluetoothSocket mSocket;
        //convert byte[] to readable strings
        private BufferedReader reader;
        private BufferedWriter writer;//----------------------
        private System.IO.Stream mStream;
        private InputStreamReader mReader;

        private System.IO.Stream oStream;
        private OutputStreamWriter oWriter;//-------------------



        public BluetoothManager()
        {
            reader = null;
            writer = null;//---------------------------
        }



        public UUID getUUIDFromString()
        {
            return UUID.FromString(UuidUniverseProfile);
        }



        private void close(IDisposable aConnectableObject)
        {
            if (aConnectableObject == null) return;
            try
            {
                aConnectableObject.Dispose();
            }
            catch(Exception)
            {
                throw;
            }
            aConnectableObject = null;
        }


        public String getDataFromDevice()
        {
            return reader.ReadLine();
        }

        public void sendDataToDevice(String data)//---------------
        {
            writer.Write(data.ToCharArray());//------------------------         
        }


        private void openDeviceConnection(BluetoothDevice btDevice)
        {
            try
            {
                //Getting socket from specific device
                mSocket = btDevice.CreateRfcommSocketToServiceRecord(getUUIDFromString());
                //blocking operation
                mSocket.Connect();
                //input stream
                mStream = mSocket.InputStream;
                //output stream
                //mSocket.OutputStream;
                oStream = mSocket.OutputStream;//----------------------------------

                oWriter = new OutputStreamWriter(oStream);//--------------------------
                writer = new BufferedWriter(oWriter);//-------------------------------

                mReader = new InputStreamReader(mStream);
                reader = new BufferedReader(mReader);
            }
            catch(IOException e)
            {
                //Close all
                close(mSocket);
                close(mStream);
                close(mReader);
                close(oStream);
                close(oWriter);//----------------------------------
                throw e;
            }
        }


        public void getAllPairedDevices()
        {
             //your android phone bluetooth device
            BluetoothAdapter btAdapter = BluetoothAdapter.DefaultAdapter;

            var devices = btAdapter.BondedDevices;
            if(devices != null && devices.Count > 0)
            {
                foreach (BluetoothDevice mDevice in devices)
                {
                    //search threw all paired devices
                    //mDevice.Name.Split(' ');
                    openDeviceConnection(mDevice);
                }
            }
        }
    }
}
...