读取C#中串口的格式不正确

时间:2013-04-20 17:56:24

标签: c# arduino

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

1 个答案:

答案 0 :(得分:0)

我猜你正在阅读罗盘书写得更快。因此,您的程序认为它正在接收两个方向,而如果它稍微延迟读取它将只收到一个。

如果您将读取的数据分组为三个数字,则支持此假设,我们会获得您期望的范围内的路线。

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

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