我正在使用C#从Arduino板读取数据。
在C#中,我有以下内容:
// Write a string
port.Write("x");
Thread.Sleep(50);
SerialPortRead();
...在SerialPortRead()
我有:
private static void SerialPortRead()
{
port.DataReceived += new SerialDataReceivedEventHandler(port_DataReceived);
}
private static void port_DataReceived(object sender,SerialDataReceivedEventArgs e)
{
Console.WriteLine(port.ReadExisting());
}
并且输出看起来像:
329327
32
7
327
3
26
327
3
26
32
7
我做错了什么?输出应该是326-329左右,这个值来自一个罗盘,它连接到我从Arduino读取的一个引脚。
请注意:
在Arduino中,我有一个串行读取方法,用于监视输入字符x并返回指南针的值。
答案 0 :(得分:0)
我猜你正在阅读罗盘书写得更快。因此,您的程序认为它正在接收两个方向,而如果它稍微延迟读取它将只收到一个。
如果您将读取的数据分组为三个数字,则支持此假设,我们会获得您期望的范围内的路线。
尝试在发送触发器字符之后添加延迟,或者甚至更好 - 添加一个控制字符来表示指南针已经写完整个方向,然后读取直到收到该字符。
编辑:我现在注意到你已经睡了 - 所以剩下的选项就是分离/终止字符。