Передача данных из Arduino в C# приложение

Domfactum
Offline
Зарегистрирован: 02.06.2021

Имеется: Arduino Mega 2560, соединена по USB с компом

Не могу понять, почему неправильно выводится информация в C#

Код Ардуино:

// подключение библиотеки DHT
 #include "DHT.h"
 // тип датчика DHT
 #define DHTTYPE DHT11

// контакт подключения входа данных модуля DHT11
 int pinDHT11=2;
 // контакт подключения аналогового выхода модуля влажности почвы
 int pinSoilMoisture=A6;
 // контакт подключения аналогового выхода фоторезистора
 int pinPhotoresistor=A4;

// создание экземпляра объекта DHT
 DHT dht(pinDHT11, DHTTYPE);

void setup()
 {
 // запуск последовательного порта
 Serial.begin(9600);
 dht.begin();
 }

void loop()
 {
 // получение данных с DHT11
 float h = dht.readHumidity();
 float t = dht.readTemperature();
 if (isnan(h))
 {
 Serial.println("Failed to read from DHT");
 }
 else
 {
 Serial.print("Humidity= "); Serial.print(h);Serial.println(" %");
 Serial.print("Temp= "); Serial.print(t);Serial.println(" *C");
 }
 // получение значения с аналогового вывода модуля влажности почвы
 int val0=analogRead(pinSoilMoisture);
 Serial.print("Humidity pochvi= "); Serial.println(val0);

 // получение значения с аналогового вывода фоторезистора
 int val2=analogRead(pinPhotoresistor);
 Serial.print("Light= "); Serial.println(val2);
 // пауза 5 секунд
 Serial.println( );
 delay(5000);
 }

 Код C#:

// подключение библиотеки DHT
 #include "DHT.h"
 // тип датчика DHT
 #define DHTTYPE DHT11

// контакт подключения входа данных модуля DHT11
 int pinDHT11=2;
 // контакт подключения аналогового выхода модуля влажности почвы
 int pinSoilMoisture=A6;
 // контакт подключения аналогового выхода фоторезистора
 int pinPhotoresistor=A4;

// создание экземпляра объекта DHT
 DHT dht(pinDHT11, DHTTYPE);

void setup()
 {
 // запуск последовательного порта
 Serial.begin(9600);
 dht.begin();
 }

void loop()
 {
 // получение данных с DHT11
 float h = dht.readHumidity();
 float t = dht.readTemperature();
 if (isnan(h))
 {
 Serial.println("Failed to read from DHT");
 }
 else
 {
 Serial.print("Humidity= "); Serial.print(h);Serial.println(" %");
 Serial.print("Temp= "); Serial.print(t);Serial.println(" *C");
 }
 // получение значения с аналогового вывода модуля влажности почвы
 int val0=analogRead(pinSoilMoisture);
 Serial.print("Humidity pochvi= "); Serial.println(val0);

 // получение значения с аналогового вывода фоторезистора
 int val2=analogRead(pinPhotoresistor);
 Serial.print("Light= "); Serial.println(val2);
 // пауза 5 секунд
 Serial.println( );
 delay(5000);
 }

Вывод данных в COM порте Ардуино:

Вывод данных в C#:

Domfactum
Offline
Зарегистрирован: 02.06.2021

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO.Ports;
using System.Threading;

namespace Diplom
{
    public partial class Form1 : Form
    {
        SerialPort port = new SerialPort("COM8", 9600, Parity.None, 8, StopBits.One);

        public Form1()
        {
            InitializeComponent();

            port.DataReceived += new SerialDataReceivedEventHandler(OnDataReceived);
            port.Open();
        }

        private void OnDataReceived(object sender, SerialDataReceivedEventArgs e)
        {
            textBox1.Invoke(
                (ThreadStart)delegate ()
                {
                    textBox1.Text = port.ReadExisting();
                });
        }

        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            port.Close();
        }
    }
}

Ошибся кодом C#)

b707
Offline
Зарегистрирован: 26.05.2017

у вас каждая пришедшая строчка выводится в новый Текстбокс

Domfactum
Offline
Зарегистрирован: 02.06.2021

А не подскажите как мне это исправить?

b707
Offline
Зарегистрирован: 26.05.2017

Domfactum пишет:

А не подскажите как мне это исправить?

не, я С# не знаю совсем

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Domfactum пишет:

А не подскажите как мне это исправить?

Спроси у научного руководителя своего Diplom

Kakmyc
Offline
Зарегистрирован: 15.01.2018

Исправить это можно множеством способов.
Но если ни одного из них не приходит на ум при написании диплома, то наверное, пора в армию.

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

Kakmyc пишет:
Исправить это можно множеством способов. Но если ни одного из них не приходит на ум при написании диплома, то наверное, пора в армию.

и куда полетят калибры?

v258
v258 аватар
Offline
Зарегистрирован: 25.05.2020

ua6em пишет:

Kakmyc пишет:
Исправить это можно множеством способов. Но если ни одного из них не приходит на ум при написании диплома, то наверное, пора в армию.

и куда полетят калибры?

Солдат прицеливать все равно не будет, ему максимум на кнопку нажать доверят ))

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

v258 пишет:

ua6em пишет:

Kakmyc пишет:
Исправить это можно множеством способов. Но если ни одного из них не приходит на ум при написании диплома, то наверное, пора в армию.

и куда полетят калибры?

Солдат прицеливать все равно не будет, ему максимум на кнопку нажать доверят ))

да ну, у нас мухами стреляли )))

Logik
Offline
Зарегистрирован: 05.08.2014

ua6em пишет:

Kakmyc пишет:
Исправить это можно множеством способов. Но если ни одного из них не приходит на ум при написании диплома, то наверное, пора в армию.

и куда полетят калибры?

Напишем код! Спасем мир от террора!

Domfactum
Offline
Зарегистрирован: 02.06.2021

Ладно, пойду, наверное в армию, программирование походу не моё)

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

ua6em пишет:

и куда полетят калибры?

Известно куда - на Воронеж.

Rumata
Rumata аватар
Offline
Зарегистрирован: 29.03.2019

Domfactum пишет:
Ладно, пойду, наверное в армию, программирование походу не моё)

Иди в стройбат, не нервируй стариков;) Тут некоторые еще карибский кризис не забыли

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

ua6em пишет:

да ну, у нас мухами стреляли )))

из рогатки?

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

DetSimen пишет:

ua6em пишет:

да ну, у нас мухами стреляли )))

из рогатки?

Я чет подумал, што из трубочки, как жеваной бумагой, только мухами ;))))

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

DetSimen пишет:

ua6em пишет:

да ну, у нас мухами стреляли )))

из рогатки?

естественно )))

Logik
Offline
Зарегистрирован: 05.08.2014

Rumata пишет:

Domfactum пишет:
Ладно, пойду, наверное в армию, программирование походу не моё)

Иди в стройбат, не нервируй стариков;) 

Ты потом по тем мостам ездить будешь.

Rumata
Rumata аватар
Offline
Зарегистрирован: 29.03.2019

Logik пишет:

Ты потом по тем мостам ездить будешь.

Готов ради будущих поколений пожертвовать собой. Или, думаешь, лучше в РВСН ему служить идти?))

BOOM
BOOM аватар
Offline
Зарегистрирован: 14.11.2018

v258 пишет:

ua6em пишет:

Kakmyc пишет:
Исправить это можно множеством способов. Но если ни одного из них не приходит на ум при написании диплома, то наверное, пора в армию.

и куда полетят калибры?

Солдат прицеливать все равно не будет, ему максимум на кнопку нажать доверят ))


Кнопки разные бывают, даже «ядерные»...