[ad_1]
親愛なるみんな
私は Xamarin.Android の初心者です
デバイスは、OTG 機能を使用して My Android スマートフォンに接続されています。 Xamarin c#(Visual Studio 2017)でシリアルポート経由でアクセスしたい。
私を案内してください。 ご協力いただきありがとうございます
私が試したこと:
UsbManager、UsbDevice、および UsbInterface クラスに関するトピックを読みましたが、コード例とビデオ チュートリアルが見つかりません。
解決策 1
解決策 2
UsbManager usbManager = (UsbManager)Forms.Context.GetSystemService(Context.UsbService);
MesageDataEvent?.Invoke(“受信した UsbManaager”);
UsbDevice usbDevice = usbManager.DeviceList.Values.First();
UsbInterface usbInterface = usbDevice.GetInterface(0);
MesageDataEvent?.Invoke(“受信した usbInterface”);
UsbEndpoint エンドポイント = usbInterface.GetEndpoint(0);
MesageDataEvent?.Invoke(“受信エンドポイント”);
int portNumber = endpoint.EndpointNumber;
MesageDataEvent?.Invoke(“受信ポート番号”);
var drivers = await FindAllDriversAsync(usbManager);
MesageDataEvent?.Invoke(“受信したドライバ”);
var driver = drivers.FirstOrDefault();
MesageDataEvent?.Invoke($”受信したドライバー {driver.ToString()}”);
selectedPort = driver.GetPort();
MesageDataEvent?.Invoke($”Received selectedPort{selectedPort.ToString()} + {selectedPort.GetType().ToString()} + {selectedPort.PortNumber.ToString()}”);
UsbDeviceConnection 接続 = null;
試す
{
var permissionGranted = await usbManager.RequestPermissionAsync(usbDevice, MainActivity.Instance);
MesageDataEvent?.Invoke(permissionGranted.ToString());
場合 (権限付与)
{
var tr = usbManager.HasPermission(usbDevice);
MesageDataEvent?.Invoke($”Received {tr.ToString()}”);
接続 = usbManager.OpenDevice(usbDevice);
MesageDataEvent?.Invoke($”受信したドライバー {connection.ToString()}”);
UsbEndpoint end = usbDevice.GetInterface(0).GetEndpoint(0);
connection.ClaimInterface(usbInterface, true);
selectedPort.Open(接続);
MesageDataEvent?.Invoke(“デバイス接続を開く”);
serialIoManager = 新しい SerialInputOutputManager(selectedPort)
{
ボーレート = 9600、
データビット = 8、
StopBits = StopBits.One、
パリティ = Parity.None、
};
MesageDataEvent?.Invoke(“開く”);
試す
{
serialIoManager.DataReceived += (送信者, e) =>
{
MessageDataEvent?.Invoke($”Listen{e.Data}”);
試す
{
UpdateReceivedData(e.Data);
リッスン (e.Data);
}
catch (Exception ex) { MesageDataEvent?.Invoke(ex.ToString()); }
};
}
キャッチ (例外 e)
{
MesageDataEvent?.Invoke($”{e.ToString()}”);
}
MessageDataEvent?.Invoke($”iii”);
試す
{
MesageDataEvent?.Invoke($”eerr”);
serialIoManager.Open(usbManager);
}
キャッチ (例外 e)
{
MesageDataEvent?.Invoke($”{e.ToString()} Set deviceConnection”);
}
}
}
[ad_2]
コメント