Ejemplo n.º 1
0
        protected override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);
            SetContentView(Resource.Layout.main);

            UsbSerialDeviceManager = new UsbSerialDeviceManager(this, "Aid.UsbSerialExamples.Aid.UsbSerialExamples.USB_PERMISSION", true);
            UsbSerialPortList      = new List <UsbSerialPort>();

            DeviceListListView = (ListView)FindViewById(Resource.Id.deviceList);

            Adapter = new MyArrayAdapter(this, Android.Resource.Layout.SimpleExpandableListItem2, UsbSerialPortList);
            DeviceListListView.Adapter = Adapter;

            UsbSerialDeviceManager.DeviceAttached += (object sender, UsbSerialDeviceEventArgs e) => { RefreshDeviceList(); };
            UsbSerialDeviceManager.DeviceDetached += (object sender, UsbSerialDeviceEventArgs e) => { RefreshDeviceList(); };
            UsbSerialDeviceManager.Start();

            DeviceListListView.ItemClick += (sender, e) =>
            {
                int position = e.Position;
                Log.Debug(TAG, "Pressed item " + position);
                if (Adapter.Count <= position)
                {
                    Log.Warn(TAG, "Illegal position.");
                    return;
                }

                UsbSerialPort port = Adapter.GetItem(position);
                ShowConsoleActivity(port);
            };
        }
 protected override void OnResume()
 {
     base.OnResume();
     Log.Debug(TAG, "Resumed, port=" + UseUsbSerialPort);
     if (UseUsbSerialPort == null)
     {
         TitleTextView.Text = "No serial device.";
     }
     else
     {
         try {
             UseUsbSerialPort.Baudrate = TransfarRate;
             UseUsbSerialPort.Open();
             TransfarRateValueTextView.SetText(TransfarRate.ToString(), TextView.BufferType.Normal);
         } catch (Exception e) {
             Log.Error(TAG, "Error setting up device: " + e.Message, e);
             TitleTextView.Text = "Error opening device: " + e.Message;
             try {
                 UseUsbSerialPort.Close();
             } catch (Exception) {
                 // Ignore.
             }
             UseUsbSerialPort = null;
             return;
         }
         TitleTextView.Text = "Serial device: " + DeviceName;
     }
     RequestedOrientation = ScreenOrientation.Portrait;
 }
Ejemplo n.º 3
0
        async Task OnItemClick(object sender, AdapterView.ItemClickEventArgs e)
        {
            Log.Info(TAG, "Pressed item " + e.Position);
            if (e.Position >= adapter.Count)
            {
                Log.Info(TAG, "Illegal position.");
                return;
            }

            // request user permission to connect to device
            // NOTE: no request is shown to user if permission already granted
            selectedPort = adapter.GetItem(e.Position);
            var permissionGranted = await usbManager.RequestPermissionAsync(selectedPort.Driver.Device, this);

            if (permissionGranted)
            {
                // start the SerialConsoleActivity for this device

                /*var newIntent = new Intent(this, typeof(SerialConsoleActivity));
                 * newIntent.PutExtra(SerialConsoleActivity.EXTRA_TAG, new UsbSerialPortInfo(selectedPort));
                 * StartActivity(newIntent);*/
                var newIntent = new Intent(this, typeof(TempModTestActivity));
                newIntent.PutExtra(TempModTestActivity.EXTRA_TAG, new UsbSerialPortInfo(selectedPort));
                StartActivity(newIntent);
                this.Finish();
            }
        }
Ejemplo n.º 4
0
 protected override void OnResume()
 {
     base.OnResume();
     Log.Debug(TAG, "Resumed, port=" + mUsbSerialPort);
     if (mUsbSerialPort == null)
     {
         mTitleTextView.Text = "No serial device.";
     }
     else
     {
         try {
             mUsbSerialPort.Baudrate = 19200;
             mUsbSerialPort.Open();
         } catch (Exception e) {
             Log.Error(TAG, "Error setting up device: " + e.Message, e);
             mTitleTextView.Text = "Error opening device: " + e.Message;
             try {
                 mUsbSerialPort.Close();
             } catch (Exception) {
                 // Ignore.
             }
             mUsbSerialPort = null;
             return;
         }
         mTitleTextView.Text = "Serial device: " + mUsbSerialPort.GetType().Name;
     }
 }
 public SerialInputOutputManager(UsbSerialPort port)
 {
     this.port = port;
     BaudRate  = DEFAULT_BAUDRATE;
     Parity    = DEFAULT_PARITY;
     DataBits  = DEFAULT_DATABITS;
     StopBits  = DEFAULT_STOPBITS;
 }
        public UsbSerialPortInfo(UsbSerialPort port)
        {
            var device = port.Driver.Device;

            VendorId   = device.VendorId;
            DeviceId   = device.DeviceId;
            PortNumber = port.PortNumber;
        }
        /**
         * Starts the activity, using the supplied driver instance.
         *
         * @param context
         * @param driver
         */
        static public void Show(Context context, UsbSerialPort port)
        {
            UseUsbSerialPort = port;
            Intent intent = new Intent(context, typeof(SerialConsoleActivity));

            intent.AddFlags(ActivityFlags.SingleTop | ActivityFlags.NoHistory);
            context.StartActivity(intent);
        }
Ejemplo n.º 8
0
        private async void SerialButton_Click(object sender, EventArgs e)
        {
            /////////////SerialActivity///////////
            selectedPort = adapter.GetItem(0);
            var permissionGranted = await usbManager.RequestPermissionAsync(selectedPort.Driver.Device, this);

            if (permissionGranted)
            {
                var newIntent = new Intent(this, typeof(NavigationSerialActivity));
                newIntent.PutExtra(NavigationSerialActivity.EXTRA_TAG, new UsbSerialPortInfo(selectedPort));

                StartActivity(newIntent);
            }
        }
 /// <summary>
 /// Initializes a new instance of the UsbSerialPort class.
 /// </summary>
 /// <param name="device">
 /// UsbDevice, whose functions should be compatible with CdcControl and CdcData.
 /// </param>
 /// <returns>
 /// The result of Promise contains a new UsbSerialPort instance. It contains null, if failed.
 /// </returns>
 public static Windows.Foundation.IAsyncOperation <UsbSerialPort> CreateAsync(
     Windows.Devices.Usb.UsbDevice device
     )
 {
     return(Task.Run(async() =>
     {
         var that = new UsbSerialPort(device);
         var success = await that.TryInitialize();
         if (success)
         {
             return that;
         }
         else
         {
             return null;
         }
     }
                     ).AsAsyncOperation <UsbSerialPort>());
 }
Ejemplo n.º 10
0
 /// <summary>
 /// Initializes a new instance of the UsbSerialPort class.
 /// </summary>
 /// <param name="device">
 /// UsbDevice, whose functions should be compatible with CdcControl and CdcData.
 /// </param>
 /// <returns>
 /// The result of Promise contains a new UsbSerialPort instance. It contains null, if failed.
 /// </returns>
 public static Windows.Foundation.IAsyncOperation<UsbSerialPort> CreateAsync(
     Windows.Devices.Usb.UsbDevice device
 )
 {
     return Task.Run(async () =>
     {
         var that = new UsbSerialPort(device);
         var success = await that.TryInitialize();
         if (success)
         {
             return that;
         }
         else
         {
             return null;
         }
     }
     ).AsAsyncOperation<UsbSerialPort>();
 }
Ejemplo n.º 11
0
        async Task OnItemClick(object sender)
        {
            for (int i = 0; i < adapter.Count; i++)
            {
                selectedPortTest = adapter.GetItem(i);

                // Поиск устройства

                if (selectedPortTest.Driver.Device.VendorId == 6790 && selectedPortTest.Driver.Device.DeviceId == 1003)
                {
                    ItemPort = i;
                }

                //
            }


            selectedPort = adapter.GetItem(ItemPort);
            var permissionGranted = await usbManager.RequestPermissionAsync(selectedPort.Driver.Device, this);

            if (permissionGranted)
            {
                //MessageBox("Доступ к USB получен!");

                int vendorId   = selectedPort.Driver.Device.VendorId;
                int deviceId   = selectedPort.Driver.Device.DeviceId;
                int portNumber = 0;


                var drivers = await FindAllDriversAsync(usbManager);

                var driver = drivers.Where((d) => d.Device.VendorId == vendorId && d.Device.DeviceId == deviceId).FirstOrDefault();
                if (driver == null)
                {
                    throw new Exception("Driver specified in extra tag not found.");
                }

                port = driver.Ports[portNumber];
                if (port == null)
                {
                    MessageBox("No serial device.");
                    return;
                }

                serialIoManager = new SerialInputOutputManager(port)
                {
                    BaudRate = 115200,
                    DataBits = 8,
                    StopBits = StopBits.One,
                    Parity   = Parity.None,
                };
                serialIoManager.DataReceived += (sender, e) =>
                {
                    RunOnUiThread(() =>
                    {
                        UpdateReceivedData(e.Data);
                    });
                };
                serialIoManager.ErrorReceived += (sender, e) =>
                {
                    RunOnUiThread(() =>
                    {
                        var intent = new Intent(this, typeof(MainActivity));
                        StartActivity(intent);
                    });
                };

                try
                {
                    serialIoManager.Open(usbManager);
                }
                catch (Java.IO.IOException e)
                {
                    MessageBox("Error opening device: " + e.Message);
                    return;
                }
            }
        }
Ejemplo n.º 12
0
        protected async override void OnResume()
        {
            base.OnResume();

            var portInfo   = Intent.GetParcelableExtra(EXTRA_TAG) as UsbSerialPortInfo;
            int vendorId   = portInfo.VendorId;
            int deviceId   = portInfo.DeviceId;
            int portNumber = portInfo.PortNumber;

            var drivers = await FindAllDriversAsync(usbManager);

            var driver = drivers.Where((d) => d.Device.VendorId == vendorId && d.Device.DeviceId == deviceId).FirstOrDefault();

            if (driver == null)
            {
                throw new Exception("Driver specified in extra tag not found.");
            }
            port = driver.Ports[portNumber];
            if (port == null)
            {
                bluetoothData1.Text = "No serial device.";
                return;
            }
            serialIoManager = new SerialInputOutputManager(port)
            {
                //BaudRate = 115200,
                BaudRate = 9600,
                DataBits = 8,
                StopBits = StopBits.One,
                Parity   = Parity.None,
            };

            serialIoManager.DataReceived += (sender, e) =>
            {
                RunOnUiThread(() =>
                {
                    UpdateReceivedData(e.Data);

                    if (received_data == 0)
                    {
                        received_data = 1;
                    }
                    if (buffer[0] >= 0)
                    {
                        receive_buffer[receive_buffer_counter] = buffer[0];                // (byte)nextByte;                 //Load them in the received_buffer array.
                    }
                    //Search for the start signature in the received data stream.
                    if (receive_byte_previous == 'J' && receive_buffer[receive_buffer_counter] == 'B')
                    {
                        receive_buffer_counter = 0;                                          //Reset the receive_buffer_counter counter if the start signature if found.
                        receive_start_detect++;                                              //Increment the receive_start_detect to check for a full data stream reception.
                        if (receive_start_detect >= 2)
                        {
                            Set_data();
                            latLongJMCdrone = new LatLng(-l_lat_gps / 1000000.0, -l_lon_gps / 1000000.0);
                            if (start == 0)
                            {
                                wayPointArray[0] = latLongJMCdrone;
                            }
                            if (home_gps_set == 0 && number_used_sats > minSats && start == 2)
                            {
                                home_gps_set     = 1;
                                home_lat_gps     = l_lat_gps;
                                home_lon_gps     = l_lon_gps;
                                homeLatLong      = new LatLng(-home_lat_gps / 1000000.0, -home_lon_gps / 1000000.0);
                                wayPointArray[0] = homeLatLong;
                            }
                            if (home_gps_set == 1 && start == 0)
                            {
                                home_gps_set = 0;
                            }
                            if (fixCameraHomePoint / fixCameraHomePointDivisor != 1 || boolDragEnd || floatingButton2_clicked || floatingButton3_clicked || floatingButton4_clicked || number_used_sats == 0 || flight_mode >= 5)
                            {
                                mapFragment.GetMapAsync(this);//update Map
                            }
                            if (number_used_sats == 0)
                            {
                                Toast.MakeText(this, "No GPS signal", ToastLength.Long).Show();
                                progressBar1.SetProgress(1 + myRandowInt.Next(2, 5), false);
                                fixCameraHomePointDivisor = 1;
                                fixCameraHomePoint        = 2;
                            }
                            if (number_used_sats > 0 && number_used_sats <= minSats)
                            {
                                progressBar1.SetProgress(number_used_sats * 7 + myRandowInt.Next(0, 5), false);
                                fixCameraHomePoint = 6;
                            }
                            if (number_used_sats > minSats)
                            {
                                fixCameraHomePoint = 7;

                                progressBar1.SetProgress(80 + myRandowInt.Next(5, 20), false);
                            }

                            if (flight_mode == 1)
                            {
                                bluetoothData1.Text = "1-Auto level";
                            }
                            if (flight_mode == 2)
                            {
                                bluetoothData1.Text = "2-Altitude hold";
                            }
                            if (flight_mode == 3)
                            {
                                bluetoothData1.Text = "3-GPS hold";
                            }
                            if (flight_mode == 4)
                            {
                                bluetoothData1.Text = "4-RTH active";
                            }
                            if (flight_mode == 5)
                            {
                                bluetoothData1.Text = "5-RTH I";                     //5-RTH Increase altitude
                            }
                            if (flight_mode == 6)
                            {
                                bluetoothData1.Text = "6-RTH R";                     //6-RTH Returning to home position
                            }
                            if (flight_mode == 7)
                            {
                                bluetoothData1.Text = "7-RTH L";                     //7-RTH Landing
                            }
                            if (flight_mode == 8)
                            {
                                bluetoothData1.Text = "8-RTH F";                     //8-RTH finished
                            }
                            if (flight_mode == 9)
                            {
                                bluetoothData1.Text = "9-Fly waypoint";
                            }

                            bluetoothData2.Text = (latLongJMCdrone.Latitude).ToString();
                            bluetoothData3.Text = (latLongJMCdrone.Longitude).ToString();
                            bluetoothData4.Text = number_used_sats.ToString();

                            bluetoothData5.Text       = start.ToString();
                            bluetoothData6.Text       = actual_compass_heading.ToString();
                            bluetoothData7.Text       = battery_voltage.ToString();
                            bluetoothData8.Text       = los_distance.ToString("0.") + " m";
                            fixCameraHomePointDivisor = fixCameraHomePoint;
                        }
                    }
                    else
                    {                                                                   //If there is no start signature detected.
                        receive_byte_previous = receive_buffer[receive_buffer_counter]; //Safe the current received byte for the next loop.
                        receive_buffer_counter++;                                       //Increment the receive_buffer_counter variable.
                        if (receive_buffer_counter > 48)
                        {
                            receive_buffer_counter = 0;                                         //Reset the receive_buffer_counter variable when it becomes larger than 38.
                        }
                    }

                    if (flight_mode == 9)
                    {
                        fixWayPoint = true;
                    }
                    if (flight_mode == 3 && fixWayPoint == false)
                    {
                        WriteData(send_buffer);
                    }
                    if (start == 2 && flight_mode == 3 && flyWayPointCounter <= addWayPointCounter + 1 && floatingButton3_clicked && fixWayPoint)
                    {
                        int latitude;
                        int longitude;
                        fixWayPoint = false;
                        flyWayPointCounter++;
                        floatingButton1.Hide();
                        floatingButton2.Hide();
                        floatingButton3.Hide();
                        floatingButton4.Hide();
                        if (flyWayPointCounter == addWayPointCounter + 1)
                        {  // +1 para retornar a origem !!!!
                            floatingButton3_clicked = false;
                            flyWayPointCounter      = 0;

                            floatingButton1.Show();
                            floatingButton2.Show();
                            floatingButton3.Show();
                            floatingButton4.Show();
                            latitude = (int)(homeLatLong.Latitude * 1000000.0);
                            if (latitude < 0)
                            {
                                latitude *= -1;               // deve ser um valor positivo// nao sei porque //deve ser por causa do sketch translatebyte do codigo arduino!!!!
                            }
                            longitude = (int)(homeLatLong.Longitude * 1000000.0);
                            if (longitude > 0)
                            {
                                longitude *= -1;                // deve ser um valor negativo// nao sei porque //deve ser por causa do sketch translatebyte do codigo arduino!!!!
                            }
                        }
                        else
                        {
                            latitude = (int)(wayPointArray[flyWayPointCounter].Latitude * 1000000.0);
                            if (latitude < 0)
                            {
                                latitude *= -1;               // deve ser um valor positivo// nao sei porque //deve ser por causa do sketch translatebyte do codigo arduino!!!!
                            }
                            longitude = (int)(wayPointArray[flyWayPointCounter].Longitude * 1000000.0);
                            if (longitude > 0)
                            {
                                longitude *= -1;                // deve ser um valor negativo// nao sei porque //deve ser por causa do sketch translatebyte do codigo arduino!!!!
                            }
                        }

                        send_buffer[0] = (byte)'W';
                        send_buffer[1] = (byte)'P';

                        send_buffer[5] = (byte)(latitude >> 24);
                        send_buffer[4] = (byte)(latitude >> 16);
                        send_buffer[3] = (byte)(latitude >> 8);
                        send_buffer[2] = (byte)latitude;

                        send_buffer[9] = (byte)(longitude >> 24);
                        send_buffer[8] = (byte)(longitude >> 16);
                        send_buffer[7] = (byte)(longitude >> 8);
                        send_buffer[6] = (byte)longitude;

                        send_buffer[10] = (byte)'-';
                        check_byte      = 0;
                        for (temp_byte = 2; temp_byte <= 10; temp_byte++)
                        {
                            check_byte ^= send_buffer[temp_byte];
                        }
                        send_buffer[11] = check_byte;
                        WriteData(send_buffer);
                    }
                });
            };
            serialIoManager.ErrorReceived += (sender, e) =>
            {
                RunOnUiThread(() =>
                {
                    var intent = new Intent(this, typeof(MainActivity));
                    StartActivity(intent);
                });
            };

            try
            {
                serialIoManager.Open(usbManager);
            }
            catch (Java.IO.IOException e)
            {
                bluetoothData1.Text = "Error opening device: " + e.Message;
                return;
            }
        }
Ejemplo n.º 13
0
 private void ShowConsoleActivity(UsbSerialPort port)
 {
     SerialConsoleActivity.Show(this, port);
 }
Ejemplo n.º 14
0
        protected override void OnResume()
        {
            base.OnResume();

            #region USB adatkapcsoalt beállítása

            //Először elkérjük a komplett USB managert
            this.m_UsbManager = GetSystemService(Context.UsbService) as UsbManager;

            //Megkeressük a legelső (egyetlen) USB eszközt
            List <IUsbSerialDriver> devices = FindAllDriversAsync(this.m_UsbManager);

            IUsbSerialDriver hardware = devices.FirstOrDefault();
            if (hardware != null)
            {
                this.m_SerialPort = hardware.Ports.FirstOrDefault();
                if (this.m_SerialPort != null)
                {
                    //Ha találtunk eszközt, hozzáférést érünk az eszközhöz
                    PendingIntent pi = PendingIntent.GetBroadcast(this, 0, new Intent("ACTION_USB_PERMISSION"), 0);
                    this.m_UsbManager.RequestPermission(this.m_SerialPort.Driver.Device, pi);
                    //if(task.Result == true)
                    {
                        //Ha megkaptuk a hozzáférést akkor megynitjuk az eszközt mint sorosport
                        this.m_SerialIO = new SerialInputOutputManager(this.m_SerialPort)
                        {
                            BaudRate = 9600,
                            DataBits = 8,
                            StopBits = StopBits.One,
                            Parity   = Parity.None,
                        };

                        this.m_SerialIO.DataReceived += (sender, e) =>
                        {
                            this.RunOnUiThread(() =>
                            {
                                this.OnReceiveSerialData(e.Data);
                            });
                        };

                        this.m_SerialIO.ErrorReceived += (sender, e) =>
                        {
                            this.RunOnUiThread(() =>
                            {
                                var intent = new Intent(this, typeof(MainActivity));
                                StartActivity(intent);
                            });
                        };

                        try
                        {
                            this.m_SerialIO.Open(this.m_UsbManager);

                            this.m_Web.EvaluateJavascript("ext_stateChanged('OK')", null);
                            return;
                        }
                        catch (Java.IO.IOException e)
                        {
                            this.m_Web.EvaluateJavascript("ext_stateChanged('ERROR')", null);
                            return;
                        }
                    }
                }
            }

            this.m_Web.EvaluateJavascript("ext_stateChanged('Unknown')", null);
            #endregion
        }
        private async void StartReceiving()
        {
            if (App.UsbManager == null || App.PortInfo == null)
            {
                ToastService.ToastShortMessage(AppResources.No_Device);
                return;
            }

            var driver =
                await FindDriversService.GetSpecificDriverAsync(App.UsbManager,
                                                                App.PortInfo);

            if (driver != null)
            {
                _port = driver.Ports[App.PortInfo.PortNumber];
            }
            else
            {
                ToastService.ToastShortMessage(AppResources.No_Driver);
                return;
            }

            CurrentDeviceName = _port.GetType().Name;
            NotifyPropertyChanged(nameof(CurrentDeviceName));

            _serialIoManager = new SerialInputOutputManager(_port)
            {
                BaudRate = CurrentSettings.BaudRate,
                DataBits = CurrentSettings.DataBits,
                StopBits = CurrentSettings.StopBits,
                Parity   = CurrentSettings.Parity
            };
            _serialIoManager.DataReceived += (sender, e) =>
            {
                Device.BeginInvokeOnMainThread(() => { UpdateReceivedData(e.Data); });
            };
            _serialIoManager.ErrorReceived += (sender, e) =>
            {
                Device.BeginInvokeOnMainThread(() =>
                {
                    ToastService.ToastShortMessage(AppResources
                                                   .Received_Error);
                });
            };
            ToastService.ToastShortMessage(AppResources.Port_Listening);

            try
            {
                _serialIoManager.Open(App.UsbManager);
            }
            catch (Exception)
            {
                ToastService.ToastShortMessage(
                    $"{AppResources.Open_Failed}: {CurrentDeviceName}");
            }
            finally
            {
                NotifyPropertyChanged(nameof(PortCommand));
                NotifyPropertyChanged(nameof(PortStatus));
            }
        }
        protected async override void OnResume()
        {
            Log.Info(TAG, "OnResume");

            base.OnResume();

            var portInfo   = Intent.GetParcelableExtra(EXTRA_TAG) as UsbSerialPortInfo;
            int vendorId   = portInfo.VendorId;
            int deviceId   = portInfo.DeviceId;
            int portNumber = portInfo.PortNumber;

            Log.Info(TAG, string.Format("VendorId: {0} DeviceId: {1} PortNumber: {2}", vendorId, deviceId, portNumber));

            var drivers = await MainActivity.FindAllDriversAsync(usbManager);

            var driver = drivers.Where((d) => d.Device.VendorId == vendorId && d.Device.DeviceId == deviceId).FirstOrDefault();

            if (driver == null)
            {
                throw new Exception("Driver specified in extra tag not found.");
            }

            port = driver.Ports[portNumber];
            if (port == null)
            {
                titleTextView.Text = "No serial device.";
                return;
            }
            Log.Info(TAG, "port=" + port);

            titleTextView.Text = "Serial device: " + port.GetType().Name;

            serialIoManager = new SerialInputOutputManager(port)
            {
                BaudRate = 9600,
                DataBits = 8,
                StopBits = StopBits.One,
                Parity   = Parity.None,
            };
            serialIoManager.DataReceived += (sender, e) =>
            {
                RunOnUiThread(() =>
                {
                    UpdateReceivedData(e.Data);
                });
            };
            serialIoManager.ErrorReceived += (sender, e) => {
                RunOnUiThread(() => {
                    var intent = new Intent(this, typeof(MainActivity));
                    StartActivity(intent);
                });
            };

            Log.Info(TAG, "Starting IO manager ..");
            try
            {
                serialIoManager.Open(usbManager);
            }
            catch (Java.IO.IOException e)
            {
                titleTextView.Text = "Error opening device: " + e.Message;
                return;
            }
        }
Ejemplo n.º 17
0
 public AndroidSerialPort(UsbManager usbManager, UsbSerialPort port, Context ctx)
 {
     this.usbManager = usbManager;
     this.port       = port;
     this.ctx        = ctx;
 }