Я пытаюсь прочитать простую считывание датчика с ардуино. Ардуино подключается к COM3 (используется для отправки данных и программирования arduino). Программа C# очень проста и пытается прочитать, что отправляет ардуино. Проблема: я не могу открыть COM3-порт с C# или arduino, когда другая сторона (C# или arduino соответственно) уже открыла его. Просто отправка без открытия не дает никаких результатов. Как вы должны «подключить» их? Я понимаю, что оба устройства открывают порт с той же скоростью, а затем вы можете отправлять и читать данные. Когда я пытаюсь открыть, я получу UnauthorizedAccess на стороне C# или «не может открыть серийный номер» на стороне arduino.Чтение Информация, отправленная arduino в Serial Port с C#
Arduino C-код:
#include <DHT.h>
#define DHTPIN A4
#define DHTTYPE DHT11
#define THERPIN A0
DHT dht(DHTPIN,DHTTYPE);
String hum="Humidity:";
String temptext="Temp:";
String semi=";";
void setup() {
Serial.begin(9600);
dht.begin();
pinMode(A0,INPUT);
}
void loop() {
float humidity = dht.readHumidity();
delay(300);
float temp = dht.readTemperature();
delay(300);
if (isnan(humidity)||isnan(temp))
{
Serial.println("Fehler beim Lesen(NAN)");
delay (5000);
}else
{
Serial.print(temp + semi);
Serial.print(humidity);
Serial.flush();
delay(1000);
}
}
C# Код
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.IO.Ports;
namespace ConsoleApplication3
{
class Program
{
static void Main(string[] args)
{
SerialPort serialPort1;
serialPort1 = new SerialPort();
serialPort1.PortName = "COM3";
serialPort1.BaudRate = 9600;
serialPort1.DtrEnable = true;
REPEAT:
if (serialPort1.IsOpen)
{
string reading = serialPort1.ReadLine();
Console.WriteLine(reading);
serialPort1.Close();
}
else
{
Console.WriteLine("closed,opening");
serialPort1.Open();
goto REPEAT;
}
}
}
}
При поиске решения всегда, что другая программа уже с помощью COM-порта, но это не то, что именно то, что мне нужно было общаться? Насколько я понимаю, ардуино должен использовать тот же COM-порт, что и мое приложение C#.
Благодаря
Если он не может открыть порт, что означает, что что-то еще на ПК имеет порт, открытый, это не ардуино. Я бы рекомендовал использовать полученные данные в классе serialport, и он будет срабатывать каждый раз, когда вы получите символы на этом порту, и вы можете решить, что с ними делать. – Baddack