使用C#和Netduino记录数据

时间:2015-02-27 12:32:46

标签: c# logging i2c netduino

我正在为纳米印刷项目开发遥测平台。我的团队正在使用Netduino 2 plus(不是我的第一选择,但是你打算做什么?)我对C#并不熟悉并且是新手程序员,可以肯定。

我们编写了一些代码,用于成功轮询I2C温度传感器并使用debug.print写入控制台。我希望将这些数据写入文件。

有些例子可以将文件从SD卡传输到PC,但这对我来说似乎没有必要(尽管为了不超出缓冲区可能是完全必要的?)。是否有一个调用只是将数据写入文件而不是写入控制台?

据我了解,我们可能需要一个应用程序来监听PC上的串口。看来我们还需要一个相应的应用程序来从硬件中写入。我过去曾使用微控制器,只需打开一个串口并通过USB发送到文件位置。

以下是我们用于将数据打印到控制台的代码:

using System;
using System.Net;
using System.Net.Sockets;
using System.Threading;
using Microsoft.SPOT;
using Microsoft.SPOT.Hardware;
using SecretLabs.NETMF.Hardware;
using SecretLabs.NETMF.Hardware.Netduino;
using System.IO.Ports;

namespace NetduinoApplication1
{
    public class Program
    {
        public static void Main()
        {
            OutputPort led = new OutputPort(Pins.ONBOARD_LED, false);
            OutputPort p = new OutputPort(Pins.GPIO_PIN_SDA, true); 
            p.Write(false); 
            p.Dispose();
            // write your code here
            byte[] Addr = new byte[1];
            Addr[0] = 0x07;
            byte[] TxBuff = new byte[9];
            byte[] RxBuff = new byte[9];
            I2CDevice.Configuration I2C_Configuration = new I2CDevice.Configuration(0x5A, 100);
            I2CDevice I2C1 = new I2CDevice(I2C_Configuration);
            I2CDevice.I2CTransaction[] WriteTran = new I2CDevice.I2CTransaction[] { I2CDevice.CreateWriteTransaction(Addr), I2CDevice.CreateWriteTransaction(TxBuff) };
            I2CDevice.I2CTransaction[] ReadTran = new I2CDevice.I2CTransaction[] { I2CDevice.CreateWriteTransaction(Addr), I2CDevice.CreateReadTransaction(RxBuff) };
            while (true)
            { 
                int iWriteCount = I2C1.Execute(WriteTran, 1000);
                //Debug.Print("Write Count: " + iWriteCount.ToString());
                led.Write(true);
                Thread.Sleep(200);
                int iReadCount = I2C1.Execute(ReadTran, 1000);
                if (iReadCount >= 2)
                {
                    int iVal = RxBuff[1] * 256 + RxBuff[0];
                    double Temperature = ((iVal * 0.02) - 273.15) * 9.0 / 5.0 + 32.0;
                    Debug.Print("Temperature: " + Temperature.ToString() + " deg F");
                }
                led.Write(false);
                Thread.Sleep(200);
            }

        }

    }
}

如果我需要创建一个应用程序,我想这样做,但我真的可以使用某个方向。这里的一点经验将有很长的路要走。

1 个答案:

答案 0 :(得分:1)

所以,有几件事情浮现在脑海中。

  1. 如果您的Netduino具有网络连接,您可以将数据写入SD卡上的文件,然后通过FTP传输文件。有很多库可以做到这一点。
  2. 与1相同,但将数据推送到Web服务。您可以使用HTTPRequest库将快速JSON帖子发布到Web服务。您需要编写Web服务。但是也有很多免费服务可以使用数据源并将其存储为ubidots
    1. 如果你真的想要进入串口路由,坏消息是Netduino的USB串口保留用于调试。但你可以得到一个便宜的小USB UART适配器来做到这一点。有一篇很棒的博文here可以解释它。
  3. 祝你好运!