IMU传感器LPMS-B2:无法通过蓝牙连接到Unity应用程序?

时间:2019-09-06 07:52:55

标签: c# unity3d bluetooth

我正在尝试将此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实现中做错了什么吗?

0 个答案:

没有答案