我一直在玩传感器作为传递给我的旧项目的一部分,我已经开始读取串行输出作为字符串并将其打印到控制台以及记录经过时间的计时器打印它。大多数数据都可以顺利记录,但是经过一段时间的情况会大大增加。我正在使用带有一些自定义代码的RazorIMU来输出单独的加速度计,磁力计和陀螺仪读数作为字符串,问题可能是由此产生的,尽管在这里发布的内容有点多,所以我只是把我的C#代码。
b
这是控制台输出的一小部分,带有滞后峰值。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Diagnostics;
using System.Threading.Tasks;
using System.IO.Ports;
using System.Threading;
namespace SensorTest
{
class Program
{
static void Main(string[] args)
{
SerialPort com = new SerialPort("COM7", 57600, Parity.None, 8, StopBits.One);
com.Open();
Stopwatch clock = new Stopwatch();
float deltaT = 0.0f;
com.ReadLine();
clock.Start();
while (true)
{
deltaT = clock.ElapsedMilliseconds;
clock.Restart();
Console.Write(deltaT + "ms:");
Console.WriteLine(com.ReadLine());
}
}
}
}
正如我之前所说,它可能是IMU,但如果它是引起问题的代码,任何建议甚至是“你是白痴,那么这样做”将不胜感激。
小更新:暂停添加表示读入的数据似乎被附加并按接收顺序输出。如果我将传感器保持在高位暂停的一个位置,则在控制台显示更改之前需要花费大量时间。希望这很有用。
答案 0 :(得分:0)
分析究竟发生了什么的好工具是this serial port sniffer。 有了它,你可以看到Tx / Rx上的任何字节,即使你的代码无法读取该字节 - 那么你可以看到责任是否在IMU上。