-
Add USB device permission settings.
Refer to the project for configuration, library source code. For Android 14 and above, note the details. -
Search for USB serial devices.
1 2 3 4 5 6 7 8 9 10 11 12 13
Android.App.Activity act = Platform.CurrentActivity; Android.Hardware.Usb.UsbManager manager = (Android.Hardware.Usb.UsbManager)act.GetSystemService(Android.Content.Context.UsbService); var table = Hoho.Android.UsbSerial.Driver.UsbSerialProber.DefaultProbeTable; table.AddProduct(0x1b4f, 0x0008, typeof(Hoho.Android.UsbSerial.Driver.CdcAcmSerialDriver)); // IOIO OTG table.AddProduct(0x09D8, 0x0420, typeof(Hoho.Android.UsbSerial.Driver.CdcAcmSerialDriver)); // Elatec TWN4 var prober = new Hoho.Android.UsbSerial.Driver.UsbSerialProber(table); var list = prober.FindAllDrivers(manager); _UsbDevices.Clear(); foreach (var item in list) { _UsbDevices.Add(item); }
-
List device serial ports.
Select one of the serial ports_UsbSerialPort
.1 2 3 4 5
_UsbSerialPorts.Clear(); foreach (var item in _UsbDevice.Ports) { _UsbSerialPorts.Add(item); }
-
Open the serial port.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
Android.App.Activity act = Platform.CurrentActivity; //var portInfo = act.Intent.GetParcelableExtra("PortInfo") as Hoho.Android.UsbSerial.Extensions.UsbSerialPortInfo; //int vendorId = portInfo.VendorId; //int deviceId = portInfo.DeviceId; //int portNumber = portInfo.PortNumber; Android.Hardware.Usb.UsbManager manager = (Android.Hardware.Usb.UsbManager)act.GetSystemService(Android.Content.Context.UsbService); //var table = Hoho.Android.UsbSerial.Driver.UsbSerialProber.DefaultProbeTable; //table.AddProduct(0x1b4f, 0x0008, typeof(Hoho.Android.UsbSerial.Driver.CdcAcmSerialDriver)); // IOIO OTG //table.AddProduct(0x09D8, 0x0420, typeof(Hoho.Android.UsbSerial.Driver.CdcAcmSerialDriver)); // Elatec TWN4 //var prober = new Hoho.Android.UsbSerial.Driver.UsbSerialProber(table); //var list = prober.FindAllDrivers(manager); //var first = list.FirstOrDefault(); //Hoho.Android.UsbSerial.Driver.UsbSerialPort port = first.Ports[0]; //IDictionary<string, Android.Hardware.Usb.UsbDevice> devicesDictionary = manager.DeviceList; //Android.Hardware.Usb.UsbDevice dvc = devicesDictionary.ElementAt(0).Value; // Request permission to access the serial port var permissionGranted = await manager.RequestPermissionAsync(_UsbDevice.Device, act.ApplicationContext); if (permissionGranted) { if (serialInputOutputManager == null) { serialInputOutputManager = new Hoho.Android.UsbSerial.Extensions.SerialInputOutputManager(_UsbSerialPort) { BaudRate = 115200, DataBits = 8, StopBits = Hoho.Android.UsbSerial.Driver.StopBits.One, Parity = Hoho.Android.UsbSerial.Driver.Parity.None, }; serialInputOutputManager.DataReceived += (sender, e) => { }; serialInputOutputManager.ErrorReceived += (sender, e) => { }; } try { if (!serialInputOutputManager.IsOpen) { serialInputOutputManager.Open(manager); } } catch (Exception ex) { return; } }
-
Write data.
1 2 3 4 5 6 7 8 9 10 11 12
try { byte[] sleepdata = new byte[] { 0xf0, 0x04, 0x10, 0xf1 }; if (serialInputOutputManager.IsOpen) { _UsbSerialPort.Write(sleepdata, 200); } } catch (Exception ex) { return; }
-
Close the serial port.
1 2 3 4 5 6 7 8 9 10 11
try { if (serialInputOutputManager.IsOpen) { serialInputOutputManager.Close(); } } catch (Exception ex) { return; }