【问题标题】:Plot data from the serial port从串行端口绘制数据
【发布时间】:2011-08-02 14:40:37
【问题描述】:

我在 .NET 中有一个 9600 波特率的串行端口。传入的数据是 数字,是电机编码器2个脉冲之间的时间,实际上是电机的RPM

如何实时绘制数据?

【问题讨论】:

  • 绘图使用什么显示技术?您是在寻找 WPF 图表控件、WinForms 控件,还是在寻找滚动自己的指南?请更加具体,以便社区知道如何回答您的问题。
  • 您是否设法在某个变量中获取数据?你想用什么技术来绘制它?
  • 这里有一些帮助:传入的数据不是数字。它们是字节。也许代表 ASCII 数字的字节,很难分辨。
  • 我想实现 zedgraph,绘制 rpm 的变化图。数据由 arduino 以一个整数的形式发送,表示最大 pwm 转一圈 2056 微秒

标签: .net serial-port arduino


【解决方案1】:

一个简单的绘图仪是相当容易做到的。您可以花费数小时寻找合适的库或程序,或者在同等时间内编写自己的库或程序。

这是我过去的做法

  • 分配一个循环缓冲区 - 大约 2-4K 数据点就足够了
  • 将您的串行数据存储在串行缓冲区中
  • 获取可绘制区域
  • 将可绘制区域的高度映射到您希望显示的最大值 - 最小值
  • 将可绘制区域的宽度映射到您希望显示的点数
  • 启动一个线程,接收串行数据,对其进行解析并将其放入循环缓冲区中,
  • 启动另一个线程定期检查缓冲区中的新数据,将循环缓冲区中的数据绘制到后台缓冲区上,然后更新使用后台缓冲区显示的可绘制区域。

前段时间我也遇到过类似的问题。我寻找了一个简单、轻便的程序,它可以开箱即用。我终于屈服了,并使用 Win32 调用编写了我自己的程序。 .NET 实现会更简单。

http://www.fast-product-development.com/real-time-serial-data-plot.html

【讨论】:

    【解决方案2】:

    arduino 操场上有一个 example 可以做到这一点,你应该检查一下。

    或者作为一个通用目的和更大的灵活性,您可以使用Firmata,它使您能够从您的计算机远程控制您的 arduino(digital_write、digital_read、analog_write、analog_read...),另外还有 FirmataVB,它是一个 .NET 组件类库,其中包含使用 Firmata V 2.0 协议发送和接收消息的方法,因此您无需动手,只需在您的 arduino 上加载firmata,使用该库,您就完成了

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-08-21
      • 1970-01-01
      • 2014-05-16
      • 2011-06-14
      • 1970-01-01
      • 2010-11-12
      相关资源
      最近更新 更多