Com-Schnittstelle anteuern

Für allgemeine Fragen zur Programmierung, welche nicht! direkt mit Lazarus zu tun haben.
Antrepolit
Beiträge: 340
Registriert: Di 12. Sep 2006, 08:57
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Kontaktdaten:

Com-Schnittstelle anteuern

Beitrag von Antrepolit »

Hallo Leute.

Ich will die Com2 (RS232)-Schnittstelle ansteuern. Wie mache ich das
mit Lazarus? In C++ hab ich es schon versucht nach einem Beispiel, aber
das klappt (auch) nicht. benötige ich einen zusätzlichen Treiber oder sowas?

Danke für Antworten!

Grüße, Antrepolit

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Nein, am besten geht das meiner meinung nach mit Synapse.
Dort gibt es eine Bibliothek nennt sich SynaSer und kann sehr gut plattformübergreifend mit Seriellen schnittstellen umgehen.
Hab ich schon für alles von simpler rs232 über usb wandler bis hin zu infrarot erfolgrech genutzt.
Das einzige was es nicht kann ist asynchroner zugriff.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

Antrepolit
Beiträge: 340
Registriert: Di 12. Sep 2006, 08:57
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Kontaktdaten:

Beitrag von Antrepolit »

OK, was ist denn Synapse genau?
Gibt es einen Link?
Denke!

Grüße

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

http://www.ararat.cz/synapse/

Synapse ist eine plattformübergreifende Netzwerkbibliothek für Delphi und fpc.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

Antrepolit
Beiträge: 340
Registriert: Di 12. Sep 2006, 08:57
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Kontaktdaten:

Beitrag von Antrepolit »

Ich versuche mein Glück mal mit der Synaser-Unit.
Ich möchte mittels eines Nullmodem-Kabels aufzeichnen, was ein
alter DOS-Rechner über die Com2 sendet. Ich frage mich, ob das
möglich ist mit Synaser, da ich ziemlich Hardware-Nah arbeiten muss.
Ich befürchte fast, dass die Synaser nur im Synchronmodus arbeiten kann.

MfG

Cherry

Beitrag von Cherry »

.
Zuletzt geändert von Cherry am Mo 7. Mai 2007, 12:45, insgesamt 1-mal geändert.

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Und ? Threads sind erfunden :)
Asynchron kann mans ja recht einfach mit Windows boardmitteln lösen.
Aber wenns multiplattform sein soll ist Synapse meinermeinung nach die beste Lösung.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

Antrepolit
Beiträge: 340
Registriert: Di 12. Sep 2006, 08:57
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Kontaktdaten:

Beitrag von Antrepolit »

@Christian: Könntest du mir bitte einen Tipp zu den 'Windows Bordmitteln'
geben? Habe gestern X verschiedene Wege mit Freepascal probiert, auf
die COM zuzugreifen - alles vergebens. Selbst das Assembbler-Beispiel, das
in Delphi angeblich funktioniert lieferte den Exitcode 218. :( Es ist zum
verzweifeln.
Am Ende bin ich gestern abend bei C++ hängen geblieben, wo es tatsächlich
Funtionen gibt, um einzelne Pins der COM auf Low oder Hight zu setzen.

Mit Google wird's auch immer schwieriger, noch was zu finden.

MfG

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

http://www.delphiclub.de/html/serielle_ ... stelle.htm

Da steht alles drin was du brauchst, hab ich auch schon getestet funktioniert definitiv wenn nicht machst du was falsch ;)
Wenn du die Schnittstelle etwas genauer einrichten willst als mit BuildCommDCB
Dann schau die die Synaser Unit an dort sieht man ganz gut wie man die DCB Struktur ordentlich einrichten muss.

Ich würds trotsdem der Plattformunabhängigkeit halber mit Threads lösen (hab ich auch) ich nehme unter windows nur eine Funktion dazu die den Thread lockt bis tatsächlich was auf der Schnittstelle empfangen wurde.
Damit verschwende ich keine CPU Zeit und es ist trotsdem Plattformunabhängig unter Linux und macos und den bsd´s geht halt n bissle mehr cpu Zeit drauf, merkt man aber nicht.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

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

Beitrag von mschnell »

Async Pro ist eine Delphi-Bibliothek, die mit Hilfe von Threads serielle Schnittstellen in Delphi sehr leicht über Events handhabbar macht. Es ist als Open Source Projekt bei Sourceforge zu bekommen.

Hat schon 'mal jemand versucht, AsyncPro auf TP und Linux zu portieren ? Wenn neine sollte man das unbedingt tun !

-Michael

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Warum ?!
Was ist daran so besonderes ? Mit SynaSer kann man das bereits jetzt mithilfe von Threads und zwar platformunabhängig warum soll man also n haufen Winapi Quatsch in mühevoller kleinarbeit übersetzen wenns sowas bereits gibt ?!
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

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

Beitrag von mschnell »

Async-Pro ist sehr leicht zu benutzen. Man bekommt einfach ein Event (nach Wunsch im Mainthread oder in einem anderen Thread) wenn vom Serienport etwas (es ist definierbar, was genau) angekommen ist. Der Programmierer braucht sich nicht mit Threads zu beschäftigen.

Aber Du hast vermutlich Recht: es ist vermutlich einfacher, so etwas wie Async-Pro auf Basis von SnnySer Plattformunabhängig neu zu machen, als AnsyncPro für Windows zu portieren.

-Michael

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Naja ich hab mir Asyncpro mal angeschaut, ddie Komponenten für die Serielle Schnittstelle sind ja nicht unbedingt notwendig. Aber die ganzen Telefonieroutinen wären schon schön wenn sie portiert werden. Es gibt ja soweit ich sah auch eine CLX version wenn die unter Linux läuft könnte man dan ja mal im Hinterkopf behalten. Aber wegen der Ansteuerung der Seriellen würd ich da keinen Finger rührn :).
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

Antrepolit
Beiträge: 340
Registriert: Di 12. Sep 2006, 08:57
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Kontaktdaten:

Problem gelöst...

Beitrag von Antrepolit »

Hallo Leute.
Nun, nach laaaanger Suche habe ich gefunden, was mir hilft.
Dabei handelt es sich um die DLL "INPOUT32.DLL".
Diese beinhaltet 2 Routinen, um auf Ports zuzugreifen unter Win 32.
Dummerweise war die bei meinem XP Home nicht dabei (nein, auch nicht
auf der CD).
Habe sie aber im Netz gefunden. Man kann damit sogar die einzelnen PINs
mit wenig Aufwand in gewünschte logische Zustände setzen, ohne komplette
Units anderer einzubinden, die man überall im Info und so angeben muss.
Das hält das Programm übersichtlich.

Synaser wäre bei meinem Vorhaben sowas wie "mit Kanonen auf Spatzen schießen".

Die RS 232 wird in den nächsten Jahren in der Industrie übrigens immer
noch interessant bleiben, da derzeit noch 97% aller Pumpwerke & Co
mit Hilfe der RS 232 kommunizieren, nicht via USB. Das gleiche gilt für
Messgeräte im Elektronikbereich. Darum brauchen noch viele die Funktionen für RS 232 asynchron anzusteuern.

Grüße, Antrepolit

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Das hätt ich dir auch sagen können aber warum will man den Schnittstellencontroller direkt ansprechen ? Das ist doch ein riesiger Aufwand oder willst du nur die Steuerleitungen schalten ?
Verstah auch nicht warum SynaSer oversized sein soll, es ist eine Unit mit der man über die Serielle Schnittstelle kommunizieren kann. Es geht nicht viel kleiner. Die Meissten schnittstellenkomponenten für Delphi bringen 3x soviel code mit sind nicht Plattformunabhängig und könne auch nicht viel mehr.

Und warum sollte die dll bei windows dabei sein ?! Es ist keine Microsoft Software. Es ist einfach ein Gerätetreiber der dir direkten Zugriff auf die Hardware ermöglicht (was ich auch nicht besonders empfehlenswert finde).
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

Antworten