2015-02-27 5 views
1

Я разрабатываю телеметрическую платформу для проекта нанопечати. Моя команда использует Netduino 2 plus (не мой первый выбор, но что вы собираетесь делать?) Я не совсем знаком с C#, и я новичок-программист, чтобы быть уверенным.Использование C# и Netduino для регистрации данных

У нас есть код, который успешно проверяет датчик температуры I2C и использует debug.print для записи на консоль. Я бы хотел, чтобы эти данные записывались в файл.

Есть примеры для передачи файлов с SD-карты на ПК, но это кажется мне ненужным (хотя это может быть совершенно необходимо, чтобы не перегружать буфер?). Есть ли вызов, который просто будет записывать данные в файл вместо записи на консоль?

Насколько я понимаю, нам может потребоваться приложение для прослушивания последовательного порта на ПК. Кажется, нам также понадобится соответствующее приложение для записи с аппаратного обеспечения. Раньше я использовал микроконтроллеры, которые просто открывали серию и отправляли через 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

Итак, на ум приходит пара вещей.

  1. Если у вашего Netduino есть сетевое подключение, вы можете записать данные в файл на SD-карте, а затем передать файл через FTP. Для этого есть множество библиотек.
  2. То же, что и 1, за исключением того, что данные передаются в веб-службу. Существует библиотека HTTPRequest, которую вы могли бы использовать для быстрой публикации сообщения JSON в веб-службе. Вам нужно будет написать веб-службу. Но есть также множество бесплатных услуг, которые будут получать каналы данных и хранить их, как ubidots.
    1. Если вы действительно хотите идти по последовательному порту, плохая новость в том, что последовательный порт USB Netduino зарезервирован для отладки. Но вы можете получить дешевый маленький USB-адаптер UART для этого. Это замечательное сообщение в блоге here, которое объясняет это.

Good Luck!