[C#] Serial Port connectie maken - COM poort kiezen

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • oddish2211
  • Registratie: Januari 2007
  • Laatst online: 02-09 18:07
ik ben sinds een paar dagen aan het klooien met C# in visual studio 2008, hierbij maak ik gebruik van het boek "Visual C# 2008 - de basis".
ik heb hier ook een microcontroller liggen (arduino) waarmee ik dus kan "praten" via de seriële poort, op de arduino kan ik gewoon gemakkelijk zeggen Serial.read(); , maar helaas in C# gaat dat niet zo makkelijk.

nu is deze handleiding best handig;
http://dev.emcelettronica.com/serial-port-communication-c

maar je zet in de code al vast welke COMpoort er gebruikt wordt, in dit geval COM1.
hoe maak ik een schermpje of wat dan ook waar je kunt selecteren welke COMpoort je wilt gebruiken? want stel ik draai dit op een andere pc, de COMpoort kan steeds anders zijn.

en aub, houd het een beetje simpel, proggen op de arduino gaat me al goed af, maar C# is nog steeds een echte uitdaging voor me

Acties:
  • 0 Henk 'm!

  • alex3305
  • Registratie: Januari 2004
  • Laatst online: 15-09 09:10
Op verschillende manieren zou dit kunnen;
  • Met een dialogbox waarbij je een getal kunt invoeren in een tekstveld. Als er dan invoer is kun je op basis van het getal een compoort laten kiezen lijkt me.
  • Via een configuratiebestand wat je met je programma mee levert. Zou in XML of in App.Config kunnen zijn als ik het goed heb
  • Via een dropdown menu in een opties-schermpje zou het ook nog eens kunnen.
Dat zijn de manieren die ik zou kunnen bedenken. Misschien dat je ook even kunt kijken of je misschien alle beschikbare compoorten kunt laten listen. Eventueel door middel van een foreach loop :).

Acties:
  • 0 Henk 'm!

  • InfoTracer
  • Registratie: November 2001
  • Laatst online: 19-09 12:39
op deze site staat alles wat je nodig hebt.
(had je ook kunnen googlen)
http://msmvps.com/blogs/c...900_-in-C_2300_-.NET.aspx

Acties:
  • 0 Henk 'm!

  • akooi
  • Registratie: December 2000
  • Laatst online: 23:54
Om een overzicht van de COM poorten in een combobox weer te geven is
C#:
1
cbxComPorts.DataSource = System.IO.Ports.SerialPort.GetPortNames();

voldoende...

Acties:
  • 0 Henk 'm!

  • Grijze Vos
  • Registratie: December 2002
  • Laatst online: 28-02 22:17
Als je serial port via een stukje hardware stiekem op je USB poort wordt ingeprikt dan heb ik nog wel een code snippet voor je om te autodetecten welke poort net actief is geworden.

Op zoek naar een nieuwe collega, .NET webdev, voornamelijk productontwikkeling. DM voor meer info


Acties:
  • 0 Henk 'm!

  • oddish2211
  • Registratie: Januari 2007
  • Laatst online: 02-09 18:07
ik heb toch maar even deze tutorial gebruikt;
http://dev.emcelettronica.com/serial-port-communication-c

maar nu zit ik met een probleem, in C# gebruik ik de code
C#:
1
2
3
4
5
6
7
8
9
10
11
serialPort1.PortName = "COM9";
serialPort1.BaudRate = 9600;
serialPort1.DataBits = 8;
serialPort1.Parity = Parity.None;
serialPort1.StopBits = StopBits.One;

serialPort1.Open();

serialPort1.Write("255");

serialPort1.Close();


op m'n arduino gebruik ik deze C++ code;

C++:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
int LED = 11;
int var0 = 0;

void setup() {
  Serial.begin(9600);
  pinMode(LED, OUTPUT);
}

void loop() {
  if (Serial.available() > 0) {
    var0 = Serial.read();
  }
   analogWrite(LED, var0);
}


de C# code schrijft dus een string weg (toch?) maar de arduino wilt hem direct als variabele (var0) gebruiken
helaas gebeurt er nu niets, oftewel ik moet zorgen dat de arduino een string kan gebruiken als variabele, of de C# code een cijfer stuurt dat de arduino kan "verstaan".
maar hoe doe ik dit?

Acties:
  • 0 Henk 'm!

  • bobo1on1
  • Registratie: Juli 2001
  • Laatst online: 18-05 17:57
Je kunt aan de Write method een array van Byte meegeven, in die array zet je dan de waarden die je wilt versturen.

Impedance, a measure of opposition to time-varying electric current in an electric circuit.
Not to be confused with impotence.


Acties:
  • 0 Henk 'm!

  • oddish2211
  • Registratie: Januari 2007
  • Laatst online: 02-09 18:07
en hoe doe ik dit dan? ik wil in dit geval het getal 255 versturen.

Acties:
  • 0 Henk 'm!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
http://msdn.microsoft.com/en-us/library/ms143551.aspx

Dus gewoon als volgt
C#:
1
serialPort.Write( new byte[]{ 255 }, 0, 1 );

o.i.d.

Maar dat zou je ook zelf in de documentatie op kunnen zoeken natuurlijk.

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


Acties:
  • 0 Henk 'm!

  • oddish2211
  • Registratie: Januari 2007
  • Laatst online: 02-09 18:07
en hij doet het!
zonder enige aanpassing.

heel erg bedankt
Pagina: 1