-
搜索USB串口设备
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); }
-
列出设备串口
选择其中一个串口_UsbSerialPort
1 2 3 4 5
_UsbSerialPorts.Clear(); foreach (var item in _UsbDevice.Ports) { _UsbSerialPorts.Add(item); }
-
打开串口
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; // 获取程序对串口的访问权限 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; } }
-
写数据
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; }
-
关闭串口
1 2 3 4 5 6 7 8 9 10 11
try { if (serialInputOutputManager.IsOpen) { serialInputOutputManager.Close(); } } catch (Exception ex) { return; }