Как получить значения из Arduino в asp.net - PullRequest
0 голосов
/ 19 декабря 2018

У меня проблемы с получением значений из arduino в переменную asp.net, а затем с возвратом в диаграмму, которая выполняет возвратное представление.

Диаграмма все готово, и я хочу сделать этополучить значения из термостата и добавить их на график

получить код значения (возможно, неверный)

void serialPort_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
        {
            float c1 = 1.009249522e-03f, c2 = 2.378405444e-04f, c3 = 2.019202697e-07f;
            float R1 = 10000f;

            SerialPort port;
            string data = string.Empty;

            port = (SerialPort)sender;

            // read the data from the port                                                 
            data = port.ReadExisting();

            // print Arduino data to the screen                                            
            int V0 = Int32.Parse(data);
            double R2 = R1;
            double logR2 = (double)Math.Log(R2);
            double T = (1f / (c1 + c2 * logR2 + c3 * logR2 * logR2 * logR2));

            Tc = T - 273.15f;
            float Tf = (Tc * 9f) / 5f + 32f;
            // you could work with Tc and Tf if you want, (stok data or other)                                              
        }

код arduino

    int ThermistorPin = 0;
int Vo;
float R1 = 10000;
float logR2, R2, T, Tc, Tf;
float c1 = 1.009249522e-03, c2 = 2.378405444e-04, c3 = 2.019202697e-07;

void setup() {
Serial.begin(9600);
}

void loop() {

  Vo = analogRead(ThermistorPin);
  R2 = R1 * (1023.0 / (float)Vo - 1.0);
  logR2 = log(R2);
  T = (1.0 / (c1 + c2*logR2 + c3*logR2*logR2*logR2));
  Tc = T - 273.15;
  Tf = (Tc * 9.0)/ 5.0 + 32.0; 

  Serial.print("Temperature: "); 
  Serial.print(Tf);
  Serial.print(" F; ");
  Serial.print(Tc);
  Serial.println(" C");   

  delay(500);
}

1 Ответ

0 голосов
/ 20 декабря 2018

Я предлагаю вам попробовать это следующим образом:

1. Код Arduino:

loop{
  Vo = analogRead(ThermistorPin);
  Serial.println(Vo);   
  delay(500);
}

2. Затем проверьте с помощью программного обеспечения Serial Monitor of Arduino, и значение Vo должно обновляться каждые 0,5 секунды..

3.В программе C # добавьте TextBox (это для тестирования, просто сделайте его большим, назовите его как txtInData) в вашу форму.

4. Затем попробуйте следующий код C #,

    public Form1()
    {
        InitializeComponent();
        serialPort.Open();
    }
    void serialPort_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
    {
        try
        {
            String data = serialPort.ReadExisting();
            CheckForIllegalCrossThreadCalls = false;
            txtInData.Text += data;
        }
        catch (Exception ex)
        {
            MessageBox.Show("Serial Port Read Error: " + ex.ToString(), "Error");
        }
    }

5. Запустите программу C # и проверьте, есть ли у вас аналогичный результат с шагом 2. Если нет, попробуйте добавить serialPort.DataReceived += serialPort_DataReceived; после serialPort.Open();.

6.Вы должныбыть в состоянии проанализировать ваши входящие данные сейчас.Вы по-прежнему можете использовать TextBox для проверки результатов расчета.Удалите TextBox, когда он вам больше не нужен.

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...