xamarin安卓USB CDC简单示例

pwuypxnk  于 2023-03-10  发布在  其他
关注(0)|答案(1)|浏览(330)

我想连接一些自定义USB CDC设备(STM32)到Android手机。我已经在Visual Studio 2022中使用xamarin for Android制作了应用程序的大部分其他部分。根据我的互联网搜索,我需要一些xamarin USB Android组合的外部库。大多数互联网资源指向此库:https://github.com/anotherlab/UsbSerialForAndroid
但是我觉得他们的示例代码很奇怪,我看过代码,但不知道哪部分在做什么,还有一个问题是我无法运行示例应用程序,无法与代码进行比较......
有谁能给我看一些这个库的最简单的例子代码吗?

  • 如果找到,连接到USB CDC设备
  • 如果接收到任何字符,则侦听com rx端口

谢谢

zfciruhq

zfciruhq1#

usbManager = GetSystemService(Context.UsbService) as UsbManager;
        var usb_device_list_cnt = usbManager.DeviceList.Count();
        Toast.MakeText(this, "USB:"+usb_device_list_cnt.ToString(), ToastLength.Long).Show();

我得到“USB:1”,因此找到USB设备

usb_device = usbManager.DeviceList.Values.FirstOrDefault();
        if (usb_device != null)
        {
            var man_name = usb_device.ManufacturerName;
            var usb_class = usb_device.Class;
            var usb_device_class = usb_device.DeviceClass;
            var device_name = usb_device.DeviceName;
            var product_name = usb_device.ProductName;
            Toast.MakeText(this, "USB:"+ man_name+ usb_class+ usb_device_class+ device_name+ product_name, ToastLength.Long).Show();

            try_to_connect_usb();

        }
        else Toast.MakeText(this, "USB:no", ToastLength.Long).Show();

我得到了所有的信息,关于设备-它的工作。try_to_connect_usb()在这里:

async void try_to_connect_usb()
    {
        var drivers = await FindAllDriversAsync(usbManager);
        //var driver = drivers.FirstOrDefault();
        var driver = drivers.FirstOrDefault();
        if (driver != null)
        {
            selectedPort = driver.Ports.FirstOrDefault();
            if (selectedPort != null)
            {
                serialIoManager = new SerialInputOutputManager(selectedPort)
                {
                    BaudRate = 115200,
                    //BaudRate = 9600,
                    DataBits = 8,
                    StopBits = StopBits.One,
                    Parity = Parity.None,
                };
                //serialIoManager.DataReceived += 
                Toast.MakeText(this, "USB: port found!", ToastLength.Long).Show();

            }
            else Toast.MakeText(this, "USB:no port", ToastLength.Long).Show();
        }
        else Toast.MakeText(this, "USB:no driver", ToastLength.Long).Show();
    }

而在这里我得到了“USB:没有驱动程序”。缺少了什么?
我已经用一些Android终端应用程序测试了我的STM32 CDC设备,它工作正常。

相关问题