我想读取arduino中的简单传感器读数。 arduino连接到COM3(用于发送数据和编程arduino)。 C#程序非常简单,并尝试读取arduino发送的内容。 问题:当另一端(分别是C#或arduino)已打开它时,我无法打开C#或Arduino的COM3端口。只是在没有打开的情况下发送也不会产生任何结果。你应该如何“连接”它们?我的理解是两台设备都以相同的波特率打开端口,然后您可以发送和读取数据。当我尝试打开时,我会在C#端获得UnauthorizedAccess,或者在Arduino端获得“无法打开串行”。阅读通过Arduino发送到串行端口的信息用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;
}
}
}
}
在寻找解决方案一直是另一个PROGRAMM已经使用的COM端口,但是,这不是正是我所需要沟通?据我了解,显然,arduino必须使用与我的C#应用程序相同的COM端口。
谢谢
,如果它没有打开,这意味着在PC别的东西有一个端口开放的端口,它不是Arduino的。我建议使用serialport类中的数据接收事件,每次在该端口上获得字符时它都会触发,并且您可以决定在那里使用它们。 – Baddack