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); }
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); } } }
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); }
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)); }
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)); }
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"; }); } } }