Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   daten von serieller Schnittstelle (https://www.delphipraxis.net/181057-daten-von-serieller-schnittstelle.html)

mkinzler 11. Jul 2014 17:25

AW: daten von serieller Schnittstelle
 
Der Event heisst onRxChar

binderj1 11. Jul 2014 17:41

AW: daten von serieller Schnittstelle
 
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);

begin

  vacomm1.Open;

 end;




procedure TForm1.OnRxChar(Sender: TObject; Count: Integer);
   var
     s: string;
begin
 vaComm1.ReadChar(s, Count);
     label1.Caption:= s;

end;
so??

hathor 11. Jul 2014 18:18

AW: daten von serieller Schnittstelle
 
Brauchst Du nicht auch ein Programm für den ARDUINO als ADC?

Z.B.
Delphi-Quellcode:
// ADC

int ADC0=0;  
int value;
int LEDpin=13;


void setup()

  Serial.begin(9600);


void loop()

  value=analogRead(ADC0);
  Serial.print("ADC0 = ");
  Serial.println(value);
  delay(1000);
// alle nötigen Klammern entfernt - sind verwirrend...
Zum Testen: LED blinken lassen mit einstellbarer Frequenz durch Poti

Delphi-Quellcode:
// LED Blinkfrequenz über ADC einstellen

int ADC0=0;  
int value;
int LEDpin=13;


void setup()
//{
  pinMode(LEDpin,OUTPUT);
//}

void loop()
//{
  value=analogRead(ADC0);  
  digitalWrite(LEDpin, HIGH);
  delay(value);              
  digitalWrite(LEDpin, LOW);  
  delay(value);                
//}

binderj1 11. Jul 2014 18:58

AW: daten von serieller Schnittstelle
 
Delphi-Quellcode:
const int analogInPin = A0;
int sensorValue = 0;    
int winkel =0;
#include <LiquidCrystal.h>

 

LiquidCrystal lcd(12, 11, 6,5, 4, 3);

 

void setup() {
 
  lcd.begin(16, 2);
  Serial.begin(9600);
}

void loop() {
 
  sensorValue = analogRead(analogInPin);          
 
  winkel = sensorValue /2.841;
 
 delay (500)
 Serial.println(winkel);  

 
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Winkel = ");
lcd.print(winkel);

}
das ist das Arduino-Programm

hathor 12. Jul 2014 07:25

AW: daten von serieller Schnittstelle
 
Was zeigt das LCD an?

jensw_2000 12. Jul 2014 07:28

AW: daten von serieller Schnittstelle
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von binderj1 (Beitrag 1265281)
Delphi-Quellcode:
procedure TForm1.OnRxChar(Sender: TObject; Count: Integer);
   var
     s: string;
begin
 vaComm1.ReadChar(s, Count);
     label1.Caption:= s;

end;
so??

Ne.
Du musst Dir einen Ringpuffer erstellen, an den die per ReadChar empfangenen Bytes angehängt werden.
Den Ringpuffer kannst Du dann auslesen und weiterverarbeiten (ausgeben, speichern, wasAuchImmer).

Ich hänge Dir mal ein XE2 DataModule an, das ich damals für einen Drehzahl Messplatz gebaut habe.
Für Delphi 6 wirst Du vermutlich einige Dinge anpassen müssen.
Dort verwendete ich die ComPort Library für die Serielle Kommunikation.

Es gibt sicher bessere Lösungen dafür. Schlechtere aber auch.
Das Prinzip sollte jedenfalls klar werden.
Schaue es den Code an und nimm, was Du davon verwenden möchtest.

binderj1 12. Jul 2014 10:07

AW: daten von serieller Schnittstelle
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von hathor (Beitrag 1265295)
was zeigt das lcd an?

Anhang 41448

binderj1 12. Jul 2014 10:13

AW: daten von serieller Schnittstelle
 
ich muss jetzt auf eine Hochzeit, am Montag mache ich wieder weiter.

Danke an alle die mir bis jetzt ihre Zeit geopfert haben.:-D

mfG
Johannes

himitsu 12. Jul 2014 10:52

AW: daten von serieller Schnittstelle
 
Diese ComPort-Komponente bietet nicht zufällig eine Möglichkeit an, die Daten zeilenweise auszulesen, oder bis zu einem definierbarem Stoppzeichen?

Man kann mantürlich die empfangenen Daten selber Cachen und an den Trennzeichen aufsplitten, um die Daten zu bekommen,
oder man lässt es automatischmachen.
Code:
Serial.println(...);
Trennt die einzelnen Werte ja mit einem Zeilenumbruch und an diesem kann man sie auch auftrennen.


PS: Man kann das ganze natürlich auch andersrum gestalten, indem das Arduino-Programm den aktuellen Wert nur auf Anfrage rausrückt,
oder zumindestens doppelte Werte weglässt. (z.B. nur bei Änderung "schnell" die Werte rausrückt und ansonsten längere Pausen lässt ... gibt weniger Probleme bei der Auswertung, da man bei einer Auslastung im PC nicht so schnell in ein Pufferüberlauf läut und auch so weniger "unnötige" Daten auswerten muß)

hathor 13. Jul 2014 13:49

AW: daten von serieller Schnittstelle
 
Liste der Anhänge anzeigen (Anzahl: 3)
Hier gibt es ein kostenloses Paket mit Sourcecode + Beispielprogrammen:
http://comport.sf.net/

Das MiniTerm-Programm passt perfekt zum ARDUINO.


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:57 Uhr.
Seite 2 von 3     12 3      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz