Xamarin.forms 安卓Usb通讯使用的是开源库LusoVU.XamarinUsbSerialForAndroid
第一步:使用Nuget获取LusoVU.XamarinUsbSerialForAndroid包
第二步:在.Android下新建ComportHelp类
using Android.App;
using Android.Content;
using Android.Hardware.Usb;
using Android.OS;
using Android.Runtime;
using Android.Views;
using Android.Widget;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Android.Content.PM;
using Hoho.Android.UsbSerial.Driver;
using Hoho.Android.UsbSerial.Util;
using Xamarin.Forms;
using System.Threading;
///注册DependencyService
///因为是forms跨平台,整个串口针对的是安卓,所以需要注册一个接口,在UI里面调用
[assembly:Dependency(typeof(LansoApp.ComportHelp))]
namespace LansoApp
{
public class ComportHelp:ComportHelpInterface
{
///
static ContextWrapper contextWrapper;
public static ComportHelp comportHelp= new ComportHelp();
static Context context;
private static string ACTION_USB_PERMISSION = "com.android.example.USB_PERMISSION";
public static void InitialContext(Context c)
{
contextWrapper = new ContextWrapper(c);
context = c;
///获取USB service
manager = (UsbManager)contextWrapper.GetSystemService(Context.UsbService);
UsbReciever usbReciever = new UsbReciever();
PendingIntent mPermissionIntent = PendingIntent.GetBroadcast(c, 0, new Intent(
ACTION_USB_PERMISSION), 0);
IntentFilter filter = new IntentFilter(ACTION_USB_PERMISSION);
//RegisterReceiver(usbReciever, filter);
}
/// <summary>
/// usb设备列表
/// </summary>
static IList<IUsbSerialDriver> availableDrivers;
/// <summary>
/// 服务管理
/// /// </summary>
static UsbManager manager;
/// <summary>
/// USB连接实例
/// </summary>
static UsbDeviceConnection connection;
/// <summary>
/// USB设备
/// </summary>
static IUsbSerialDriver driver;
/// <summary>
/// 串口
/// </summary>
static IUsbSerialPort Comport;
static PendingIntent mPermissionIntent;
static string usbName;
public string UsbName { get { return usbName; } }
private bool isOpen;
///接收到数据的委托,返回数据给前台界面
public event Action<byte[]> DataRecvHandle;
public event Action<string> DataHandle;
private Seri