Exemplo n.º 1
0
        public override async Task <List <Interface> > Scan()
        {
            UsbManager usbManager = ctx.GetSystemService(Context.UsbService) as UsbManager;
            var        table      = UsbSerialProber.DefaultProbeTable;

            table.AddProduct(0x1a86, 0x7523, typeof(Ch34xSerialDriver));

            var prober  = new UsbSerialProber(table);
            var drivers = await prober.FindAllDriversAsync(usbManager);

            //var drivers = prober.FindAllDrivers(usbManager);
            var output = new List <Interface>();

            foreach (var driver in drivers)
            {
                foreach (var port in driver.Ports)
                {
                    output.Add(new SerialInterface(
                                   port.Driver.Device.DeviceName, port.Driver.Device.ProductName + " by " + port.Driver.Device.ManufacturerName,
                                   new AndroidSerialPort(usbManager, port, ctx)
                                   ));
                }
            }

            return(output);
        }
Exemplo n.º 2
0
 void tgConnect_HandleCheckedChange(object sender, CompoundButton.CheckedChangeEventArgs e)
 {
     if (e.IsChecked)
     {
         driver = UsbSerialProber.Acquire(manager);
         if (driver != null)
         {
             driver.Open();
             driver.SetBaudRate(9600);
             beginListenForData();
             dataToSend = new Java.Lang.String("e");
             writeData(dataToSend);
         }
         else
         {
             Toast.MakeText(this, "Error Arduino no detectado", ToastLength.Short).Show();
         }
     }
     else
     {
         try {
             driver.Close();
         } catch (System.Exception ex) {
             Console.WriteLine(ex.Message);
         }
     }
 }
Exemplo n.º 3
0
        internal static Task <IList <IUsbSerialDriver> > FindAllDriversAsync(UsbManager usbManager)
        {
            // using the default probe table
            var table  = UsbSerialProber.DefaultProbeTable;
            var prober = new UsbSerialProber(table);

            return(prober.FindAllDriversAsync(usbManager));
        }
        public static Task <IList <IUsbSerialDriver> > FindAllDriversAsync(this UsbSerialProber prober, UsbManager manager)
        {
            var tcs = new TaskCompletionSource <IList <IUsbSerialDriver> >();

            Task.Run(() =>
            {
                tcs.TrySetResult(prober.FindAllDrivers(manager));
            });
            return(tcs.Task);
        }
Exemplo n.º 5
0
        private static List <IUsbSerialDriver> FindAllDriversAsync(UsbManager usbManager)
        {
            ProbeTable table = UsbSerialProber.DefaultProbeTable;

            table.AddProduct(0x1b4f, 0x0008, typeof(CdcAcmSerialDriver)); // IOIO OTG
            table.AddProduct(0x09D8, 0x0420, typeof(CdcAcmSerialDriver)); // Elatec TWN4

            UsbSerialProber prober = new UsbSerialProber(table);

            return(prober.FindAllDrivers(usbManager));
        }
        internal static Task <IList <IUsbSerialDriver> > FindAllDriversAsync(UsbManager usbManager)
        {
            // using the default probe table
            // return UsbSerialProber.DefaultProber.FindAllDriversAsync (usbManager);

            // adding a custom driver to the default probe table
            var table = UsbSerialProber.DefaultProbeTable;

            table.AddProduct(0x1b4f, 0x0008, Java.Lang.Class.FromType(typeof(CdcAcmSerialDriver)));             // IOIO OTG
            var prober = new UsbSerialProber(table);

            return(prober.FindAllDriversAsync(usbManager));
        }
Exemplo n.º 7
0
        internal static Task <IList <IUsbSerialDriver> > FindAllDriversAsync(UsbManager usbManager)
        {
            // using the default probe table
            // return UsbSerialProber.DefaultProber.FindAllDriversAsync (usbManager);

            // adding a custom driver to the default probe table
            var table = UsbSerialProber.DefaultProbeTable;
            //table.AddProduct(0x1b4f, 0x0008, typeof(CdcAcmSerialDriver)); // IOIO OTG

            //table.AddProduct(0x09D8, 0x0420, typeof(CdcAcmSerialDriver)); // Elatec TWN4

            var prober = new UsbSerialProber(table);

            return(prober.FindAllDriversAsync(usbManager));
        }
Exemplo n.º 8
0
        protected override void OnCreate(Bundle bundle)
        {
            base.OnCreate(bundle);

            UsbManager manager = (UsbManager)GetSystemService(UsbService);
            var        devices = UsbSerialProber
                                 .GetDefaultProber()
                                 .FindAllDrivers(manager)
                                 .Where(d => d.Device.VendorId == UsbId.VendorSyncromatics)
                                 .ToList();

            devices
            .Select(d => d.Device.DeviceId)
            .ToList()
            .ForEach(id => Debug.WriteLine(id));

            var device = devices.First();

            if (!manager.HasPermission(device.Device))
            {
                var usbPermission = "DemoApp.DemoApp.USB_PERMISSION";

                var permissionIntent = PendingIntent.GetBroadcast(this, 0, new Intent(usbPermission), 0);

                IntentFilter filter = new IntentFilter(usbPermission);

                var receiver = new UsbPermissionReceiver
                {
                    Callback = () => WireupUsb(device)
                };

                RegisterReceiver(receiver, filter);

                manager.RequestPermission(device.Device, permissionIntent);
            }
            else
            {
                WireupUsb(device);
            }
        }
        // Réception de données Li-Fi avec port série micro USB
        private async Task OpenLiFiReceiverPort()
        {
            UsbManager UsbSerialManager = AppActivity.ApplicationContext.GetSystemService(Context.UsbService) as UsbManager;

            var Table = UsbSerialProber.DefaultProbeTable;

            Table.AddProduct(0x1b4f, 0x0008, Java.Lang.Class.FromType(typeof(CdcAcmSerialDriver))); // IOIO OTG
            var Prober  = new UsbSerialProber(Table);
            var Drivers = await Prober.FindAllDriversAsync(UsbSerialManager);

            LiFiReceiverPort = null;
            foreach (var Driver in Drivers) // On cherche notre driver (le récepteur Li-Fi)
            {
                foreach (var Port in Driver.Ports)
                {
                    if (HexDump.ToHexString((short)Port.Driver.Device.VendorId) == "0403" && HexDump.ToHexString((short)Port.Driver.Device.ProductId) == "6015")
                    {
                        LiFiReceiverPort = Port;
                    }
                }
            }

            if (LiFiReceiverPort == null) // Si il n'est pas branché on affiche un message
            {
                AppActivity.RunOnUiThread(() => { ReceiverStatus.Text = "Récepteur Li-Fi absent"; });
            }
            else
            {
                var IsPermissionGranted = await UsbSerialManager.RequestPermissionAsync(LiFiReceiverPort.Driver.Device, AppActivity.ApplicationContext);

                if (IsPermissionGranted)                                             // On demande la permission à l'utilisateur d'utiliser le récepteur (Android)
                {
                    SerialIOManager = new SerialInputOutputManager(LiFiReceiverPort) // Configuration du port série
                    {
                        BaudRate = 115200,
                        DataBits = 8,
                        StopBits = StopBits.One,
                        Parity   = Parity.None
                    };

                    SerialIOManager.DataReceived += (source, args) =>            // Thread de réception de données
                    {
                        ReceivedSerialData = Encoding.UTF8.GetString(args.Data); // Données recu
                    };

                    SerialIOManager.ErrorReceived += (source, args) => // Thread si il y a une erreur
                    {
                        AppActivity.RunOnUiThread(() =>
                        {
                            ReceiverStatus.Text = "Récepteur Li-Fi absent"; // On affiche un message de débranchement
                            SerialIOManager.Close();
                        });
                    };

                    try
                    {
                        SerialIOManager.Open(UsbSerialManager); // On ouvre le port
                        AppActivity.RunOnUiThread(() => { ReceiverStatus.Text = "Récepteur Li-Fi opérationnel"; });
                    }
                    catch (Java.IO.IOException Exception)
                    {
                        AppActivity.RunOnUiThread(() => { ReceiverStatus.Text = "Erreur récepteur Li-Fi: " + Exception.Message; });
                    }
                }
                else
                {
                    AppActivity.RunOnUiThread(() => { ReceiverStatus.Text = "Permission requise"; });
                }
            }
        }