Datenbank und Daten einlesen über RS232
Datenbank und Daten einlesen über RS232
Hallo zusammen,
ich bin absoluter Neuling beim programmieren mit Lazarus (Pascale). Ich habe bereits etwas Erfahrung in C-Programmierung aber Lazerus überfordert mich etwas.
Ich möchte ein "einfaches" Programm schreiben, das aus einer Datenbank Werte übernimmt und mit einem Wert den ich über die RS232 Schnittstelle einlesen möchte (Digitalwaage) vergleicht.
Das Ergebnis soll dann in einer zweiten Datenbank gespeichert und falls gewollt ausgedruckt werden.
Ich habe jedoch keine Ahnung wie ich das jetzt ordentlich programmiere. habe mit sdfDateaSet etwas rumprobiert, komme da aber gar nicht drauf wie das funktioniert (auch schon diverse Forumeinträge und Tutorials angeschaut).
Kann mir jemand verraten....
...wie ich am einfachsten eine solchen Datenbank erstelle?
...Wie ich Werte über eine Schnittstelle (RS232) einlesen kann?
(Mir reichen auch schon verweise auf Tutorial oder Ähnliches)
Als "Anfänger" bin ich über jeden Tipp oder Beispiel Programm dankbar.
Vielen Dank vorab !
ich bin absoluter Neuling beim programmieren mit Lazarus (Pascale). Ich habe bereits etwas Erfahrung in C-Programmierung aber Lazerus überfordert mich etwas.
Ich möchte ein "einfaches" Programm schreiben, das aus einer Datenbank Werte übernimmt und mit einem Wert den ich über die RS232 Schnittstelle einlesen möchte (Digitalwaage) vergleicht.
Das Ergebnis soll dann in einer zweiten Datenbank gespeichert und falls gewollt ausgedruckt werden.
Ich habe jedoch keine Ahnung wie ich das jetzt ordentlich programmiere. habe mit sdfDateaSet etwas rumprobiert, komme da aber gar nicht drauf wie das funktioniert (auch schon diverse Forumeinträge und Tutorials angeschaut).
Kann mir jemand verraten....
...wie ich am einfachsten eine solchen Datenbank erstelle?
...Wie ich Werte über eine Schnittstelle (RS232) einlesen kann?
(Mir reichen auch schon verweise auf Tutorial oder Ähnliches)
Als "Anfänger" bin ich über jeden Tipp oder Beispiel Programm dankbar.
Vielen Dank vorab !
Re: Datenbank und Daten einlesen über RS232
"Einfaches Programm", "Anfänger" <> Datenbank, RS232, Drucken.
http://wiki.freepascal.org/Databases/de
http://synapse.ararat.cz/doc/help/synas ... erial.html
http://wiki.freepascal.org/Using_the_printer/de

http://wiki.freepascal.org/Databases/de
http://synapse.ararat.cz/doc/help/synas ... erial.html
http://wiki.freepascal.org/Using_the_printer/de
Re: Datenbank und Daten einlesen über RS232
ja ich weiß....
Danke für die Links, ist aber schon extrem weit ausgeholt für jemanden wie mich
Zur Initialisierung der Datenbank sdflaz wird leider gar nichts aufgeführt. Wie funktioniert das, bzw. wo kann ich das nachlesen?
Das gleiche beim Thema RS232. Tausende Befehle aber nichts wo man mal ansetzten könnte, wie z.B. das Ansprechen und Empfangen.

Danke für die Links, ist aber schon extrem weit ausgeholt für jemanden wie mich

Zur Initialisierung der Datenbank sdflaz wird leider gar nichts aufgeführt. Wie funktioniert das, bzw. wo kann ich das nachlesen?
Das gleiche beim Thema RS232. Tausende Befehle aber nichts wo man mal ansetzten könnte, wie z.B. das Ansprechen und Empfangen.
Re: Datenbank und Daten einlesen über RS232
Musst halt googeln.
Zu Synaser gibt es hier was: http://wiki.freepascal.org/Hardware_Access#Synaser
sdflaz habe ich noch nie verwendet. Wie liegen die Daten denn vor, bzw. was muss die "Datenbank" können?
Zu Synaser gibt es hier was: http://wiki.freepascal.org/Hardware_Access#Synaser
sdflaz habe ich noch nie verwendet. Wie liegen die Daten denn vor, bzw. was muss die "Datenbank" können?
-
- Beiträge: 6900
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: Datenbank und Daten einlesen über RS232
Ich würde zuerst mit einem einfachen Programm mit der RS232 probieren, bevor ich alles mit einer Datenbank verknüpfe.Das gleiche beim Thema RS232. Tausende Befehle aber nichts wo man mal ansetzten könnte, wie z.B. das Ansprechen und Empfangen.
Synaser würde ich auch verwenden.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot
- af0815
- Lazarusforum e. V.
- Beiträge: 6764
- Registriert: So 7. Jan 2007, 10:20
- OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
- CPU-Target: 32Bit (64Bit)
- Wohnort: Burgenland
- Kontaktdaten:
Re: Datenbank und Daten einlesen über RS232
Datenbank:
Verzeichnis \lazarus\examples\database\sqldbtutorial3
Macht natürlich Sinn vorher http://wiki.lazarus.freepascal.org/SQLdb_Tutorial0 , http://wiki.lazarus.freepascal.org/SQLdb_Tutorial1 und http://wiki.lazarus.freepascal.org/SQLdb_Tutorial2 zu machen
Wennst das Tutorial machst und fragen hast, bitte einen Verweis welches Tutorial und eine genauere Beschreibung des Fehlers/Problems.
Kannst afür ein paar Grundlagen in meine LazInfos/LazSnippets (auf Sourceforge) reisehen.
Verzeichnis \lazarus\examples\database\sqldbtutorial3
Code: Alles auswählen
SQLdb Tutorial3
===============
This directory has the accompanying code for
http://wiki.lazarus.freepascal.org/SQLdb_Tutorial3
Please see that article for instructions and requirements.
(You'll need database clients and a sample database; see the article)

Wennst das Tutorial machst und fragen hast, bitte einen Verweis welches Tutorial und eine genauere Beschreibung des Fehlers/Problems.
Kannst afür ein paar Grundlagen in meine LazInfos/LazSnippets (auf Sourceforge) reisehen.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
Re: Datenbank und Daten einlesen über RS232
Hallöchen,
danke hat mir sehr geholfen!
Kann mir jemand sagen wie ich jetzt meine eigene "Datebank" erstellen kann. Dazu kann ich doch das Tool "Datebank-Sekstop" nutzen? Der Schritt ist aber leider nicht erläutert!
Danke vorab!
danke hat mir sehr geholfen!
Kann mir jemand sagen wie ich jetzt meine eigene "Datebank" erstellen kann. Dazu kann ich doch das Tool "Datebank-Sekstop" nutzen? Der Schritt ist aber leider nicht erläutert!
Danke vorab!
Re: Datenbank und Daten einlesen über RS232
Welches DB System benutzt du denn?
MySQL, SQLite... ?
http://www.w3schools.com/sql/sql_create_db.asp
http://dev.mysql.com/doc/refman/5.7/en/ ... abase.html
http://www.tutorialspoint.com/sqlite/sq ... tabase.htm
MySQL, SQLite... ?
http://www.w3schools.com/sql/sql_create_db.asp
http://dev.mysql.com/doc/refman/5.7/en/ ... abase.html
http://www.tutorialspoint.com/sqlite/sq ... tabase.htm
Re: Datenbank und Daten einlesen über RS232
Hi,
SQL nutze ich.
Danke für die Links. Schau mir nachher gleich mal alles an!
Noch ein paar Fragen zum einlesen eines RS232 Wertes. Ich möchte nur einen Zahlenwert einer Digitalwaage einlesen und in eine Variable schreiben. Wie mache ich das? Hab jetzt mal so angefangen, bekomme aber immer den Error "Identifier not found". Mit welchem Kommando lese ich den einen Wert dann ein, sobald die Schnittstelle konfiguriert ist?
Danke!!
SQL nutze ich.
Danke für die Links. Schau mir nachher gleich mal alles an!
Noch ein paar Fragen zum einlesen eines RS232 Wertes. Ich möchte nur einen Zahlenwert einer Digitalwaage einlesen und in eine Variable schreiben. Wie mache ich das? Hab jetzt mal so angefangen, bekomme aber immer den Error "Identifier not found". Mit welchem Kommando lese ich den einen Wert dann ein, sobald die Schnittstelle konfiguriert ist?
Danke!!
Code: Alles auswählen
var
Form1: TForm1;
ser: TBlockSerial;
procedure TForm1.FormCreate(Sender: TObject);
begin
ser:=TBlockSerial.Create;
ser.Connect('COM1');
ser.config(2400, 8, 'N', SB1andHalf, False, False);
end;
Zuletzt geändert von Lori am Mi 16. Dez 2015, 17:26, insgesamt 1-mal geändert.
Grund: Highlighter
Grund: Highlighter
Re: Datenbank und Daten einlesen über RS232
Hallo,
schau mal den Thread SCPI to COM an, könnte als Beispiel interessant sein:
http://www.lazarusforum.de/viewtopic.php?f=18&t=9187
Natürlich muss das Gerät dann an COM1 hängen und alle Parameter der RS232 müssen so konfiguriert sein, wie das Gerät es haben will.
Also Baudrate, Stopbits, Xon/Xoff etc. steht in der Gerätedoku.
Dann spricht das Gerät irgendeine Sprache, die Du auch der Gerätedoku entnehmen musst.
Konkret erwarten die meisten Geräte irgendeine "Frage" (siehe Gerätedoku), die Du z.B. via Ser.Sendstring oder ähnlich dorthin sendest.
Danach kannst Du die Antwort bei der Schnittstelle abholen.
Meistens muss alles pingelig genau nach Handbuch gehen, inclusive Endezeichen (je nach Gerät) usw. sonst kommt meist gar keine Antwort.
Grüße, Stefan
schau mal den Thread SCPI to COM an, könnte als Beispiel interessant sein:
http://www.lazarusforum.de/viewtopic.php?f=18&t=9187
Code: Alles auswählen
ser.Connect('COM1');
ser.config(2400, 8, 'N', SB1andHalf, False, False);
Also Baudrate, Stopbits, Xon/Xoff etc. steht in der Gerätedoku.
Dann spricht das Gerät irgendeine Sprache, die Du auch der Gerätedoku entnehmen musst.
Konkret erwarten die meisten Geräte irgendeine "Frage" (siehe Gerätedoku), die Du z.B. via Ser.Sendstring oder ähnlich dorthin sendest.
Danach kannst Du die Antwort bei der Schnittstelle abholen.
Meistens muss alles pingelig genau nach Handbuch gehen, inclusive Endezeichen (je nach Gerät) usw. sonst kommt meist gar keine Antwort.
Grüße, Stefan
- af0815
- Lazarusforum e. V.
- Beiträge: 6764
- Registriert: So 7. Jan 2007, 10:20
- OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
- CPU-Target: 32Bit (64Bit)
- Wohnort: Burgenland
- Kontaktdaten:
Re: Datenbank und Daten einlesen über RS232
Ich würde mal mit einem Terminalprogramm anfangen (Nicht Lazarus). Damit man festellen kann wie genau die Kommunikation mit der Waage funktioniert.l0lhaxx hat geschrieben:Noch ein paar Fragen zum einlesen eines RS232 Wertes. Ich möchte nur einen Zahlenwert einer Digitalwaage einlesen und in eine Variable schreiben. Wie mache ich das?
A) Was für ein Protokoll (XON/XOFF, Hardware, keines), Geschwindigkeit, Bits (Daten und Stoppbit), etc. (Ist durch das Beispiel im Post vorher erledigt).
B) Muss ich etwas senden, damit ich ein Ergebnis von der Waage erhalte, oder sendet die von selbst, oder muss man eine Taste auf der Waage drücken ?!
C) Kann ich das ganze mit einem Terminalprogramm mir ansehen und nachvollziehen ?!
Mit (A,) B und C wird klarer wie die Kommunikation funktioniert und wie man dir am besten helfen kann.
Ich gehe davon aus, das du Synaser verwendest.
Ein Beispiel für dich ist hier http://www.turbocontrol.com/simpleserial.htm . Im Download sind die Sourcen dabei, halt nur die Pas Dateien entpacken, die du als Beispiel benötigts (DlpTempGSim.pas und DlpTempG.pas). Es sind in dem Paket die ganzen .ppu, .o Dateien dabei, auch ein Kompiler und und,.. das ist alles unnützer Ballast. Pack also nur die beiden Dateien aus und schau dir die mal an.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
Re: Datenbank und Daten einlesen über RS232
SQL ist eine Datenbanksprache und kein Datenbanksystem.l0lhaxx hat geschrieben: SQL nutze ich.
Ich hatte dich aber nach dem System gefragt.
Re: Datenbank und Daten einlesen über RS232
Hallo,
danke für die zahlreichen Antworten.
Die Wage schickt ständig den aktuellen Wert raus. Es handelt sich dabei um einen 8-Bit ASCII Code. 1 Startbit, 8 Datenbits, 1 Stopbits und kein Paritätsbit. Ich brauche also keine Anforderung senden sondern nur den aktuellen Wert in eine Variable schreiben.
Synaser?! Sorry aber damit kann ich nichts anfangen, wie gesagt ich bin neu auf diesem Gebiet!
Ich habe bis jetzt nur das Tutorial gemacht, aber da hat man ja schon eine fertige Datenbank (Employee.fdb). Ich möchte mir jetzt selbst so eine Datei erstellen.
Sorry für die Unwissenheit!
Und schon mal ein dickes Danke für die Unterstützung!!!!
danke für die zahlreichen Antworten.
ich hätte vielleicht erwähnen müssen das ich das bereits probiert habe und es funktioniert (Mit Profilab Expert). Boudrate kann ich an der Waage ändern. 2400Boud ist der Standardwert.magnetron hat geschrieben:Mit (A,) B und C wird klarer wie die Kommunikation funktioniert und wie man dir am besten helfen kann.
Ich gehe davon aus, das du Synaser verwendest.
Die Wage schickt ständig den aktuellen Wert raus. Es handelt sich dabei um einen 8-Bit ASCII Code. 1 Startbit, 8 Datenbits, 1 Stopbits und kein Paritätsbit. Ich brauche also keine Anforderung senden sondern nur den aktuellen Wert in eine Variable schreiben.
Synaser?! Sorry aber damit kann ich nichts anfangen, wie gesagt ich bin neu auf diesem Gebiet!

Kann seintheo hat geschrieben:SQL ist eine Datenbanksprache und kein Datenbanksystem.l0lhaxx hat geschrieben: SQL nutze ich.
Ich hatte dich aber nach dem System gefragt.

Sorry für die Unwissenheit!
Und schon mal ein dickes Danke für die Unterstützung!!!!
Re: Datenbank und Daten einlesen über RS232
Hallo,
kann mir jemand sagen was ich falsch gemacht habe? Fehlercode ist das Synaser nicht gefunden werden kann. Habe aber die aktuelle Version (40) in das Lazerusverzeichnis kopiert.
unit1.pas(8,78) Fatal: Kann Unit Synaser nicht finden verwendet von Unit1.
außerdem würde ich gerne wissen wie ich den aktuellen Wert jetzt auf ein TEdit schreibe.
Danke!
kann mir jemand sagen was ich falsch gemacht habe? Fehlercode ist das Synaser nicht gefunden werden kann. Habe aber die aktuelle Version (40) in das Lazerusverzeichnis kopiert.
unit1.pas(8,78) Fatal: Kann Unit Synaser nicht finden verwendet von Unit1.
außerdem würde ich gerne wissen wie ich den aktuellen Wert jetzt auf ein TEdit schreibe.
Danke!
Code: Alles auswählen
unit Unit1;
{$mode objfpc}{$H+}
interface
uses
type
{ TForm1 }
TForm1 = class(TForm)
Anzeige_Aktueller_Wert: TEdit;
procedure Anzeige_Aktueller_WertChange(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
end;
var
Form1: TForm1;
ser:TBlockSerial;
implementation
{$R *.lfm}
{$MODE DELPHI}
{ TForm1 }
Program Einwaagesoftware;
begin
ser:=TBlockserial.Create;
try
ser.RaiseExcept:=True;
ser.LinuxLock := false;
ser.Connect('COM1');
ser.Config(19200,8,'N',0,false,false);
repeat
while (ser.WaitingData > 0) do
begin
rxb:= ser.RecvByte(1000);
dump(rxb);
end;
Sleep(10);
until false;
finally
ser.Free;
end;
end.
Zuletzt geändert von Lori am Mo 21. Dez 2015, 17:34, insgesamt 1-mal geändert.
Grund: Highlighter
Grund: Highlighter
- Maik81SE
- Beiträge: 327
- Registriert: Fr 30. Sep 2011, 14:07
- OS, Lazarus, FPC: Debian 12 (L 3.4 FPC 3.2.2)
- CPU-Target: x86-64; avr
- Wohnort: Lübeck
- Kontaktdaten:
Re: Datenbank und Daten einlesen über RS232
ich erst mal bitten wir darum, das du "Highlighter" verwendest, damit wir es auch lesen könnenl0lhaxx hat geschrieben:Hallo,
kann mir jemand sagen was ich falsch gemacht habe? Fehlercode ist das Synaser nicht gefunden werden kann. Habe aber die aktuelle Version (40) in das Lazerusverzeichnis kopiert.
unit1.pas(8,78) Fatal: Kann Unit Synaser nicht finden verwendet von Unit1.
außerdem würde ich gerne wissen wie ich den aktuellen Wert jetzt auf ein TEdit schreibe.
Danke!
Code: Alles auswählen
unit Unit1; {$mode objfpc}{$H+} interface uses type { TForm1 } TForm1 = class(TForm) Anzeige_Aktueller_Wert: TEdit; procedure Anzeige_Aktueller_WertChange(Sender: TObject); private { private declarations } public { public declarations } end; var Form1: TForm1; ser:TBlockSerial; implementation {$R *.lfm} {$MODE DELPHI} { TForm1 } Program Einwaagesoftware; begin ser:=TBlockserial.Create; try ser.RaiseExcept:=True; ser.LinuxLock := false; ser.Connect('COM1'); ser.Config(19200,8,'N',0,false,false); repeat while (ser.WaitingData > 0) do begin rxb:= ser.RecvByte(1000); dump(rxb); end; Sleep(10); until false; finally ser.Free; end; end.

Dann vermisse ich in diesen Zeilen auch die Einbindung der entsprechenden Unit. o.O
Was das angeht

Werte in "TEdit" schreiben,
Wenn du dahin nur einen Lesezugriff haben willst würde ich ein TLabel nutzten und sagen.
Code: Alles auswählen
Ziel.Caption=Quelle;
Code: Alles auswählen
label.caption:= 'gnublin.no-ip.info'