前几天我写了年度总结,然后有人说让我教一下他Xamarin串口通讯怎么做,其实跟java没有多大区别。
记得我刚开始接到公司这个项目的时候很懵逼,我去看了别的安卓串口工具,都不行我当时是RS232串口,后来我就去Google Pay 下载了个串口工具,试了一下,正好可以,然后我看了它用了哪些开源库,终于被我发现了,于是我就像Xamarin有这个库吗,果不其然,老天救了我,我找到了。
第一步:使用Nuget去获取一个包:LusoVU.XamarinUsbSerialForAndroid 就是这个包!哈哈 哈哈

第二步:
在OnCreate() 生命周期中进行如下操作:
//获取所有USB服务和已经连接的USB设备
UsbManager manager = GetSystemService(Context.UsbService) as UsbManager;
IList<IUsbSerialDriver> availableDrivers = UsbSerialProber.DefaultProber.FindAllDrivers(manager);
最后一步:
写一个串口通讯的方法:
#region 串口通讯
///<summary>
///串口通讯
///</summary>
void UsbSerial()
{
//打开USB连接
IUsbSerialDriver driver = availableDrivers[0];
UsbDeviceConnection connection = manager.OpenDevice(driver.Device);
if (connection == null)
{
RunOnUiThread(() =>
{
ConnUsbOrBluetooth.Text = "失败";
}
);
sc.TextSpeak("USB连接失败,请重启设备重试。");
return;
}
RunOnUiThread(() =>
{
ConnUsbOrBluetooth.Text = "成功";
ConnUsbOrBluetooth.Enabled = false;
}
);
sc.TextSpeak("USB连接成功!");
Thread t = new Thread(Query);
t.Priority = System.Threading.ThreadPriority.Highest;
t.Start();
//读取USB数据
IUsbSerialPort port = driver.Ports[0];
//串口信息 波特率 数据位 停止位 流控
serialIoManager = new SerialInputOutputManager(port)
{
BaudRate = 9600,
DataBits = 7,
StopBits = StopBits.One,
Parity = Parity.None,
};
serialIoManager.Open(manager, 1024);
StringBuilder sb = new StringBuilder();
//获取数据
serialIoManager.DataReceived += (sender, e) =>
{
sb.Append(System.Text.Encoding.Default.GetString(e.Data));
if (sb.Length >= 30)
{
BlueData bd = UiBlueData;
bd(sb.ToString());
sb.Clear();
}
}
;
}
;
#endregion
解释:
availableDrivers[0] 这里这个0就是说打开usb中的第一个设备。
//然后这里有部分是可以忽略的 像:TextSpeak() 与RunOnUiThread里的东西。一个是TTS的代码,另一个是为UI线程赋值的代码。
重新开启现成的代码:
Thread t = new Thread(Query);
t.Priority = System.Threading.ThreadPriority.Highest;
t.Start();
这部分也可以忽略,是我项目里要用到的。
接下来就是重点了,读取USB的数据,设置串口的信息:如波特率BaudRate,数据位:DataBits和停止位:StopBits,流控:Parity。
下面就是我接受数据的代码了,
由于串口不断发来数据,所以发放到 DataReceived事件中:并把获取到的数据30个长度一切割,从而拿到想要的数据。
至此Xamarin的串口通讯就可以实现了,还有什么疑问,大家可以留言。
本文作者:兰purvis
本文链接:https://www.cnblogs.com/purvis/p/10302937.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步