解决与Sphero的连接问题

内容

Sphero没有显示在可用设备列表中或连接错误:using icinterface/fopen(第83行)

属性时,Sphero不在可用设备下列出球面对象,否则接收到以下错误:

SPH = sphero
使用sphero出错(第498行)无法连接到设备。请检查设备名称是否正确,设备是否可发现
错误原因:Error using icinterface/fopen (line 83) failed open:无法连接到设备。可能的原因是连接了其他应用程序或设备不可用。

在尝试创建新的sphero对象或连接到现有sphero对象失败后,可能会发生这种情况,这可能是由于多种原因造成的,例如设备名称不正确,或设备名称不同,或无法发现、超出范围或未唤醒。

要解决这个问题,特别是在创建一个新的sphero对象时,请确保设备名称是正确的(例如sphero闪烁红色,绿色和白色的sphero - rgw)。此外,确保sphero与您的计算机配对,处于唤醒状态,当前没有连接到另一个设备(它必须以3种颜色的顺序闪烁,有关这方面的更多信息,请参阅readme.txt文件中的相关部分,以及第一次用MATLAB使用sphero时遵循的程序。你也可以参考Sphero连接包入门).

如果验证了上述条件,那么尝试再次创建Sphero对象(可能是几次)通常会成功连接。

如果仍然无法连接到设备,请关闭MATLAB,从计算机中取消对设备的配对(或删除),然后再次配对,重新启动MATLAB,并尝试创建一个新的sphero对象。

如果问题仍然存在,请尝试通过连接到Android或iOS设备上的Sphero应用程序更新Sphero固件,并重复上述过程。

连接错误:未定义的功能“蓝牙”

使用sphero出错(第498行)无法连接到设备。请检查设备名称是否正确,设备是否可发现
未定义的函数'instrhwinfo'用于类型为'char'的输入参数。

此错误(未定义函数'instrhwinfo'或'Bluetooth'…)意味着未安装仪器控制工具箱(ICT)。此包基于ICT提供的蓝牙连接功能,因此如果您想使用此包,则需要获得该工具箱。

Sphero断开,没有任何警告标志

如果您注意到sphero已经断开,但没有收到任何错误或断开消息,这意味着MATLAB不知道连接丢失了。这是不寻常的,因为接下来的任何命令都将不成功,从而导致断开连接。

在任何情况下,您都可以在重新连接之前使用“disconnect”命令(使用“connect”命令)。

重置Sphero

有时MATLAB会丢失连接,但sphero却不知道,(也就是说,它仍然显示纯色而不闪烁)。例如,当sphero变量被无意中清除,而sphero仍然连接时,可能会发生这种情况。

在这种情况下,你需要重置sphero,这可以通过将它放在充电器上来完成。

如果spiron仍在运行(旋转),那么机器人底盘下的感应铜线圈不会指向垂直向下,而是在垂直轴与与运动方向相反的轴之间形成大约45度角。因此,充电器必须以相同的角度放置,使其接近Sphero感应线圈。或者,如果你移动充电器周围的Sphero周长,它会找到线圈和重置自己。

还有这个:https://sphero.zendesk.com/entries/22259484

一旦sphero被重置,那么可以使用connect命令恢复到sphero的连接。

连接到设备时收到警告

创建到Sphero设备的连接会产生以下警告,并且连接的状态为“关闭”:

SPH = sphero(“Sphero-GPG”);
警告:读取异步消息时发生错误:Received response is not valid警告:The BytesAvailableFcn is being disabled。要启用回调属性,要么使用FOPEN连接到硬件,要么设置BytesAvailableFcn属性。
>BluetoothApi中的>BluetoothApi。在sphero> sphere .get中读取响应1145颜色在1366

当Sphero在最初尝试连接时响应无效响应时,可能会发生这种情况。请重新尝试连接。

如果问题仍然存在,将Sphero设备放在充电器上重置(参见上面关于Sphero的部分)重置Sphero),然后尝试重新连接。

当连接断开时出错

当连接丢失时,可能会出现下面所示的两个错误和警告。这可能是由于各种各样的原因,如球体超出范围,或耗尽电池,或由于不活动而进入睡眠状态。

在这种情况下,只需唤醒sphero,确保它在范围内,并使用“connect”命令重新连接它(或重新创建sphero变量)。

使用icinterface/fwrite时出错(第193行)
在sphere .internal. bluetoothapi /sendCmd(第1251行)中出现错误Bt, cmd);
sphero/set错误。颜色(第1354行)[responseexpected, seq] = sendCmd(obj.Api, 'setrgbled', [], [], [], uint8(rgb), uint8(obj.SaveLedColor));
使用sphere .internal. bluetoothapi /readResponse(第1133行)响应超时错误
sphero/heading错误(第351行)response = readResponse(obj.)Api, responseexpected, seq, obj.ResponseTimeout);
sphero/calibrate(第1112行)中的错误result2 = heading(obj, 0);
警告:无法写入设备。在Sphero /BluetoothApi/sendCmd(第1255行)中,在Sphero /set中,Sphero可能已经断开连接。颜色(第1354行)

sphero/readLocator错误(第1068行)

使用sphero/BluetoothApi/readResponse错误(第1133行)收到未知的命令ID。请查看API定义
sphero/readLocator(第1068行)错误。Api, responseexpected, seq, obj.ResponseTimeout);

导致此错误的最可能原因是您使用的Sphero固件版本为3.71,其中此功能被暂时删除。因此,如果需要使用readLocator函数,则需要使用较旧或较新的固件版本。

如果“sph”是MATLAB工作区中Sphero对象的名称,那么您可以使用以下命令来显示固件版本:

Hw =硬件信息(sph);sphver =版本(Hw);固件= [num2str(sphver.MainSpheroApplicationVersion)]...“。”num2str (sphver.MainSpheroApplicationRev)]

另请参阅

Sphero连接包示例

版权所有2015年,The MathWorks, Inc