Com Ports - Schnittstellen

Für Fragen von Einsteigern und Programmieranfängern...
Foxi1896
Beiträge: 87
Registriert: Mo 10. Jun 2013, 09:06

Com Ports - Schnittstellen

Beitrag von Foxi1896 »

Hey,
Wie ich möchte auf zwei Ports zugreifen ... einmal für ein Messgerät und zum anderen ein Knopf zu betätigen des Messgeräts.

Bisher habe ich nur auf das Messgerät zugeriffen mit:

Code: Alles auswählen

OpenCom(pchar('com' + Edit1.Text + ':9600,N,8,1'));
und nun habe ich es mit:

Code: Alles auswählen

OpenCom(pchar('com' + Edit1.Text + ':9600,N,8,1'));
 
OpenCom(pchar('com' + Edit3.Text + ':9600,N,8,1'));
DTR(0);
DTR(1);
Timer1.Enabled:=True;
ii:=0;                                                 
versucht... aber das Funktioniert nicht.
Er öffnet nur einen Port. Nicht beide.
Was für Befehle brauche ich zum öffnen und schliessen?
Kann mir da jemand weiterhelfen?


Gruß Foxi

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2840
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: Com Ports - Schnittstellen

Beitrag von m.fuchs »

Magst du auch noch sagen wo OpenCom herkommt? Ich vermute mal aus der port.dll.

Mein Tipp: Schau dir mal SynaSer an, damit geht es sicherlich einfacher: http://synapse.ararat.cz/doku.php/download
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

Thomas B.
Beiträge: 90
Registriert: Fr 2. Nov 2007, 13:32
OS, Lazarus, FPC: Win (L 1.0 FPC 2.6.0)
CPU-Target: 32Bit
Wohnort: Ulm

Re: Com Ports - Schnittstellen

Beitrag von Thomas B. »

Ich vermute mal, einfach das Objekt (mit der OpenCom Methode) nochmal als Objekt2 zu erstellen, und mit diesem auf den anderen Port zugreifen, müsste auch schon gehen. Wahrscheinlich kann ein Objekt nur ein ComPort verwalten/steuern.

NoCee
Beiträge: 174
Registriert: Do 3. Mär 2011, 21:34
OS, Lazarus, FPC: WinXp/7/10 Opensuse13.2/Leap15.3 (L 2.2.0 FPC 3.2.2 )
CPU-Target: Intel 32/64Bit, ARM9
Wohnort: Ulm

Re: Com Ports - Schnittstellen

Beitrag von NoCee »

Ich kann mich da m.fuchs nur anschließen.
Als ich mich mit seriellen Schnittstellen beschäftigt hab, verbrachte ich tagelang mit der Suche im Netz.
Da waren mehrere verschiedene Möglichkeiten zu finden. Aber je je höher die Windowsversion wurde, desto beschränkter
wurde der Hardwarezugriff auf den Comport. Von den übrig gebliebenen Möglichkeiten hatte ich mich dann für Synaser entschieden.
Das gibt einiges her, ist relativ einfach gehalten, im Netz sind da auch einige Beispiele und erläuterte Fragen zu finden.
Bei mir funzt das einwandfrei in Win und Linux. Sogar auf einem Arm9-Linuxsystem. Keine Probleme mit USB-RS232 Schnittstellen.
Für mich war "SynaSer", glaube ich, die richtige Entscheidung.

Gruß
NoCee

Foxi1896
Beiträge: 87
Registriert: Mo 10. Jun 2013, 09:06

Re: Com Ports - Schnittstellen

Beitrag von Foxi1896 »

ok, danke.
Dann schau ich mal ob ich das hinbekomme.

wp_xyz
Beiträge: 5224
Registriert: Fr 8. Apr 2011, 09:01

Re: Com Ports - Schnittstellen

Beitrag von wp_xyz »

Meine eigenen Versuche mit synaser waren erst dann erfolgreich, als ich kapiert habe, dass man die Kommunikation in einen eigenen Thread verlagern muss. Falls du noch nicht mit Threads gearbeitet hast, empfehle ich dir LazSerial (http://forum.lazarus.freepascal.org/ind ... n.html#new) anzusehen, das ist ein Wrapper um synaser, so dass du nur noch Event-Handler für das Empfangen von Daten schreiben musst und dich um den Thread nicht mehr kümmern musst.

mschnell
Beiträge: 3444
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Re: Com Ports - Schnittstellen

Beitrag von mschnell »

wp_xyz hat geschrieben: LazSerial (http://forum.lazarus.freepascal.org/ind ... n.html#new)
Und wie kommt man an den Sourcecode ?

-Michael

Michl
Beiträge: 2511
Registriert: Di 19. Jun 2012, 12:54

Re: Com Ports - Schnittstellen

Beitrag von Michl »

mschnell hat geschrieben:
wp_xyz hat geschrieben: LazSerial (http://forum.lazarus.freepascal.org/ind ... n.html#new)
Und wie kommt man an den Sourcecode ?

-Michael
Siehe http://de.wikipedia.org/wiki/GNU_Lesser ... ic_License:
Zitat: "Die GNU Lesser General Public License oder LGPL (ehemals GNU Library General Public License) ist eine weitere von der Free Software Foundation (FSF) entwickelte Lizenz für Freie Software. Die LGPL erlaubt den Entwicklern und Firmen das Verwenden und Einbinden von LGPL-Software in eigene (sogar proprietäre) Software, ohne durch ein starkes Copyleft gezwungen zu sein den Quellcode der eigenen Software-Teile offen legen zu müssen."

Code: Alles auswählen

type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection;  

wp_xyz
Beiträge: 5224
Registriert: Fr 8. Apr 2011, 09:01

Re: Com Ports - Schnittstellen

Beitrag von wp_xyz »

Und wie kommt man an den Sourcecode ?
ok - der Link ist etwas versteckt: die 7z-Datei im 1. Posting. Hab' das Package selbst allerdings noch nicht getestet.

Michl
Beiträge: 2511
Registriert: Di 19. Jun 2012, 12:54

Re: Com Ports - Schnittstellen

Beitrag von Michl »

Achso, hab das anders verstanden (bin grad ein bisschen lizenzgeschädigt) ...
wp_xyz hat geschrieben:
Und wie kommt man an den Sourcecode ?
ok - der Link ist etwas versteckt: die 7z-Datei im 1. Posting. Hab' das Package selbst allerdings noch nicht getestet.
Da musst du noch dazu schreiben, dass man die "7z" nur sehen kann, wenn man angemeldet ist, ansonsten ist da nichts zu sehen!

Code: Alles auswählen

type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection;  

wp_xyz
Beiträge: 5224
Registriert: Fr 8. Apr 2011, 09:01

Re: Com Ports - Schnittstellen

Beitrag von wp_xyz »

Danke für den Hinweis...

NoCee
Beiträge: 174
Registriert: Do 3. Mär 2011, 21:34
OS, Lazarus, FPC: WinXp/7/10 Opensuse13.2/Leap15.3 (L 2.2.0 FPC 3.2.2 )
CPU-Target: Intel 32/64Bit, ARM9
Wohnort: Ulm

Re: Com Ports - Schnittstellen

Beitrag von NoCee »

Mit Synaser hab ich meherere Sachen am Laufen. Wenn man nur eine Com braucht, macht das da auch keine Probleme
und ist dann einfach zu programmieren.
Es ist richtig, daß wenn mehrere Schnittstellen betrieben werden jeder Com ein eigener Thread spendiert bekommen sollte.
Problem ist dann das Pollen der einzelen Coms. Die Abfragezeiten summieren sich dann in den Sekundenbereich.
Wenn es dann nur 1 Hauptthread gibt, arbeitet dieser dann halt auch nicht weiter weil er auf das Ergebnis der Coms wartet auch
wenn nichts empfangen wurde. Mit 3 Coms mußte ich mich damals dann auch erstmalig mit der Threadprogrammierung auseinander
setzen weil die Anwendung dann zu langsam wurde.

Gruß
NoCee

mschnell
Beiträge: 3444
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Re: Com Ports - Schnittstellen

Beitrag von mschnell »

wp_xyz hat geschrieben:ok - der Link ist etwas versteckt: die 7z-Datei im 1. Posting. Hab' das Package selbst allerdings noch nicht getestet.
Habe ich natürlich versucht.
Der Link zeigt nur einfach auf die schon angezeigte Seite. (Angemeldet habe ich mich natürlich vorher.)

-Michael

mschnell
Beiträge: 3444
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Re: Com Ports - Schnittstellen

Beitrag von mschnell »

NoCee hat geschrieben:Problem ist dann das Pollen der einzelen Coms.
Mit Threads sollte sich das Pollen erübrigen.

Dafür gibt es TThread.Queue, Application.QueuAsyncCall und ähnliche Sachen.

-Michael

Michl
Beiträge: 2511
Registriert: Di 19. Jun 2012, 12:54

Re: Com Ports - Schnittstellen

Beitrag von Michl »

mschnell hat geschrieben:
wp_xyz hat geschrieben:ok - der Link ist etwas versteckt: die 7z-Datei im 1. Posting. Hab' das Package selbst allerdings noch nicht getestet.
Habe ich natürlich versucht.
Der Link zeigt nur einfach auf die schon angezeigte Seite. (Angemeldet habe ich mich natürlich vorher.)

-Michael
:?: Ich hab sie gerade runter geladen, entpackt, allerdings jetzt nicht ins Lazarus installiert - sieht erstmal ganz gut aus!

Ich weiss zwar nicht, ob das dem ganzen nützt, anbei der Link, wo im Anschluss des Postings die Datei angefügt ist:
http://forum.lazarus.freepascal.org/ind ... #msg118267

Direkt-Link der "LazSerial.7z": http://forum.lazarus.freepascal.org/ind ... ttach=6115

-> geht allerdings nur, wenn man auf der Seite angemeldet ist...

Code: Alles auswählen

type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection;  

Antworten