当前,我有一个相当简单的Arduino项目,可以执行以下操作:
if (BTSerial.available())
{
c = BTSerial.read();
Serial.print(c);
if (c == 1) {
digitalWrite(ledpin, HIGH);
delay(100);
BTSerial.write("Hello");
}
上面的代码一旦从连接的设备接收到字节,就返回一个字符串。 我已经使用LightBlue Explorer测试了此功能,并确认它可以正常工作!
但是,我打算自己制作的Xamarin应用程序并非如此。 目前,我已经编写了以下代码:
public UtilityPage()
{
Scan_Page();
InitializeComponent();
//Method for updating characteristic
MyDevice.characteristic.ValueUpdated += (sender, e) =>
{
var text_returned = e.Characteristic.Value;
};
}
//Push page on top of this in order to connect to pheripheral
async void Scan_Page()
{
await Navigation.PushModalAsync(new MainPage());
}
上面发生的事情是,我在UtilityPage
顶部推了一个模态,其中包含一个listview
以及要连接的设备。连接设备后,将弹出模态。
当我按下手机上的一个按钮(代码遗漏)时,它应该发送一个字节字符串,反之亦然从Arduino那里收到一个。它发送字节字符串,但没有接收到字节字符串,这意味着主要问题是MyDevice.characteristic.ValueUpdated
,它显然没有侦听来自连接的外围设备的任何通知。
我正在使用的Xamarin插件称为Xabre