我正在尝试将此IMU sensor 通过蓝牙连接到Unity实现的应用程序,该应用程序当前在Windows笔记本电脑上的Unity编辑器中运行,最终将为Android构建。
Here我找到了一些示例代码(项目: LpSensorCSharp_CommandLine_Example ),它们已成功测试:控制台上的输出是所需的传感器数据。如您所见,连接过程非常简单:
string sensor1Address = "00:04:3E:9B:A3:55";
LpmsB2 sensor1 = new LpmsB2(sensor1Address);
// connects to sensor
int retryCount = 0;
sensor1.connect();
while (sensor1.getConnectionStatus() != LpmsB2.SENSOR_STATUS_CONNECTED)
{
if (sensor1.getConnectionStatus() == LpmsB2.SENSOR_STATUS_ERROR)
{
if (retryCount >= 3)
{
Console.WriteLine("Error connecting to sensor after {0} retries. Terminating bye", retryCount);
System.Environment.Exit(1);
}
Console.WriteLine("Error connecting to sensor: {0}", sensor1.getErrorMessage());
Console.WriteLine("retrying {0}", retryCount);
retryCount += 1;
}
Thread.Sleep(3000);
}
sensor1.printConfig();
String filename = "LpmsB2Log_"+DateTime.Now.ToString("yyyyMMddHHmmss") + ".csv";
using (StreamWriter writetext = new StreamWriter(filename))
{
while (sensor1.getConnectionStatus() == LpmsB2.SENSOR_STATUS_CONNECTED)
{
int nData = sensor1.hasNewData();
if (nData > 0)
{
LpmsData sd = new LpmsData();
// Here we have our desired data
sd = ((LpmsData)sensor1.getLpmsBData());
}
else
System.Threading.Thread.Sleep(1);
}
}
现在,我正在尝试在Unity中实现相同的功能,看起来像这样(OnConnect
正在监听按钮的OnClick
):
private void OnConnect()
{
StartCoroutine(Connect());
}
private IEnumerator Connect()
{
sensor1 = new LpmsB2(sensorAddress);
// connects to sensor
int retryCount = 0;
sensor1.connect();
while (sensor1.getConnectionStatus() != LpmsB2.SENSOR_STATUS_CONNECTED)
{
Debug.LogFormat("Connection status: {0}", sensor1.getConnectionStatus());
if (retryCount >= 3)
{
Debug.LogFormat("Error connecting to sensor after {0} retries. Terminating bye", retryCount);
break;
}
Debug.LogFormat("Error connecting to sensor: {0}", sensor1.getErrorMessage());
Debug.LogFormat("retrying {0}", retryCount);
retryCount += 1;
yield return new WaitForSeconds(3f);
}
}
void Update()
{
if(sensor1 != null)
{
Debug.LogFormat("Connection status: {0}", sensor1.getConnectionStatus());
if (sensor1.getConnectionStatus() == LpmsB2.SENSOR_STATUS_CONNECTED)
{
int nData = sensor1.hasNewData();
if (nData > 0)
{
LpmsData sd = new LpmsData();
sd = ((LpmsData)sensor1.getLpmsBData());
// ...
}
}
}
}
问题在于,sensor1.getConnectionStatus()
从其第一次调用开始总是返回LpmsB2.SENSOR_STATUS_CONNECTING
,而sensor1.getErrorMessage()
在"none"
期间总是返回Connect
。
您能给我指出我在Unity实现中做错了什么吗?