Передача данных из Arduino в C# приложение
- Войдите на сайт для отправки комментариев
Ср, 02/06/2021 - 22:41
Имеется: 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#:

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#)
у вас каждая пришедшая строчка выводится в новый Текстбокс
А не подскажите как мне это исправить?
А не подскажите как мне это исправить?
не, я С# не знаю совсем
А не подскажите как мне это исправить?
Спроси у научного руководителя своего Diplom
Исправить это можно множеством способов.
Но если ни одного из них не приходит на ум при написании диплома, то наверное, пора в армию.
и куда полетят калибры?
и куда полетят калибры?
Солдат прицеливать все равно не будет, ему максимум на кнопку нажать доверят ))
и куда полетят калибры?
Солдат прицеливать все равно не будет, ему максимум на кнопку нажать доверят ))
да ну, у нас мухами стреляли )))
и куда полетят калибры?
Напишем код! Спасем мир от террора!
Ладно, пойду, наверное в армию, программирование походу не моё)
и куда полетят калибры?
Известно куда - на Воронеж.
Иди в стройбат, не нервируй стариков;) Тут некоторые еще карибский кризис не забыли
да ну, у нас мухами стреляли )))
из рогатки?
да ну, у нас мухами стреляли )))
из рогатки?
Я чет подумал, што из трубочки, как жеваной бумагой, только мухами ;))))
да ну, у нас мухами стреляли )))
из рогатки?
естественно )))
Иди в стройбат, не нервируй стариков;)
Ты потом по тем мостам ездить будешь.
Ты потом по тем мостам ездить будешь.
Готов ради будущих поколений пожертвовать собой. Или, думаешь, лучше в РВСН ему служить идти?))
и куда полетят калибры?
Солдат прицеливать все равно не будет, ему максимум на кнопку нажать доверят ))
Кнопки разные бывают, даже «ядерные»...