我正在使用Xamarin在C#中开发一个跨平台应用程序 . 在我的应用程序中,我使用蓝牙在应用程序和第三方设备之间进行通信 .
直到现在,当从所有平台发送短字节命令时,一切都像魅力一样 . 但是,当从移动电话(iOS和Android)发送更长字节命令(35字节)时,就好像该设备没有获得任何命令或得到一些命令并且无法理解它 .
我发送的命令如下:
OutPutStream.Write(MyData.ToArray(), 0, NumberOfytes);
然而,当我在PC上使用完全相同的代码行和相同的字节时,一切都很好,我得到了我想要的响应 .
我还试图通过以下方式捕获Android developer site上指定的异常:
try
{
OutPutStream.Write(MyData.ToArray(), 0, NumberOfytes);
}
catch (Java.Lang.IndexOutOfBoundsException e)
{
throw;
}
catch (IOException e)
{
throw;
}
当我将上面的行放入时,总是调用IOException(即使使用有效的命令), e 为null . 奇怪的是 bytes are actually sent 并收到了所有命令(除了长命令)!我确信所有其他命令都已正确接收,因为收到的响应是唯一的并且与我发送的命令相匹配 .
如果有人能告诉我我做错了什么(如果有的话)?或者,如果我在iOS和Android上通过蓝牙发送字节的方式有所不同?
干杯!
1 回答
以防其他人遇到我遇到的同样问题,这就是我“解决”它的方式 . 我最终决定尝试使用新的蓝牙设备,但它确实有效 .
我仍然对它如何在PC上运行感兴趣,但可以假设它可能更慢地通过蓝牙发送字节或具有更好的错误控制/ ACK算法?
希望这在某种程度上有所帮助 . 干杯