![]() |
Datenaustausch zwischen Delphiprogramm und Arduino Mikrokontroller
Hallo ich bin gerade am Experimentieren mit einem Arduino UNO R3. Für Delphi habe ich die Komponenten Comport 4.11 installiert. Das Senden der Daten von der Anwendung klappt ganz gut(Mit dem Programm schalte ich eine LED auf dem Arduino aus und an). Nun will ich wenn die Verbindung hergestellt ist nachfragen ob die LED schon brennt. UND der Mikrokontroller soll mit 1 oder 0 antworten. Wie kann ich in Delphi die Antwort jetzt empfangen?
Hier mein bisheriger Code:
Delphi-Quellcode:
Arduino Code :
procedure TForm1.Button1Click(Sender: TObject);
begin if ComPort1.Connected then begin Button1.Caption := 'Connect'; ComPort1.Close ; end else try ComPort1.Open; Button1.Caption := 'Disconnect'; except showmessage('Fehler'); end; if comport1.Connected then comport1.WriteStr('LEDSTATUS') ; LED := false; end; procedure TForm1.Button2Click(Sender: TObject); var str : String; begin str := '1'; if comport1.Connected then begin comport1.WriteStr(str); showmessage(str); end; end; procedure TForm1.Button3Click(Sender: TObject); var str,str2 : String; begin str := '0'; if comport1.Connected then begin comport1.WriteStr(str); showmessage(str); end; end;
Code:
char empfang; int LED=0; int LEDPIN=7; void setup(){ Serial.begin(9600); pinMode(LEDPIN, OUTPUT); } void loop(){ if(Serial.available()) { empfang = Serial.read(); if(empfang=='LEDSTATUS'){ Serial.print(LED); } if( isDigit(empfang) ) { LED = (empfang - '0'); digitalWrite(LEDPIN,LED); } } } |
AW: Datenaustausch zwischen Delphiprogramm und Arduino Mikrokontroller
Kennt Comport 4.11 den Befehl comport1.ReadByte?
Sonst mach es so:
Delphi-Quellcode:
begin
str := '1'; if comport1.Connected then begin comport1.WriteStr(str); // showmessage(str); Sleep(200); ComPort.ReadStr(S,80); if Pos('0',s)>0 then... ... if Pos('1',s)>0 then... ... |
AW: Datenaustausch zwischen Delphiprogramm und Arduino Mikrokontroller
Ne kennt nicht
|
AW: Datenaustausch zwischen Delphiprogramm und Arduino Mikrokontroller
Es müsste doch den Befehl Comport.ReadString(String, Count) geben.
Die Kontrolle, ob überhaupt was ankommt, kannst du mit einem Terminalprogramm machen. |
AW: Datenaustausch zwischen Delphiprogramm und Arduino Mikrokontroller
Was muss ich für Count eingeben?
Delphi-Quellcode:
Hier bekomme ich nicht als Nachricht.
if comport1.Connected then
begin comport1.WriteStr('4') ; comport1.ReadStr(str,1); showmessage(str); end; |
AW: Datenaustausch zwischen Delphiprogramm und Arduino Mikrokontroller
Zitat:
Zitat:
|
AW: Datenaustausch zwischen Delphiprogramm und Arduino Mikrokontroller
Zwischen WriteStr und ReadStr muss eine Pause sein für die Verarbeitungszeit des Microcontrollers -> Sleep(200);
|
AW: Datenaustausch zwischen Delphiprogramm und Arduino Mikrokontroller
Vielen Dank funktioniert prima. :thumb:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:11 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz