0

我正在使用 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 并返回指南针的值。

4

1 回答 1

0

我猜你的阅读速度比指南针的书写速度要快。因此,您的程序认为它正在接收两个方向,而如果它延迟读取一点,它只会收到一个。

如果您将读取的数据分组为三个数字,我们会在您期望的范围内获得方向,这一假设得到了支持。

在发送触发字符后尝试在读取之前添加延迟,甚至更好 - 添加控制字符以表示指南针已写入整个方向,然后读取直到收到该字符。

编辑:我现在注意到你已经睡了 - 所以剩下的选项是分离/终止字符。

于 2013-04-20T18:06:06.127 回答