Forum: PC-Programmierung Freepascal: Serial Port


von Bernd (Gast)


Lesenswert?

Von Turbo Pascal DOS kommend, steige ich gerade auf Freepascal Windows 
um. Mein Problem ist nun, daß ich keine Unit für die serielle 
Schnittstelle habe. Hat jemand eine entsprechende Unit oder einen Link. 
Das Internet gibt erstaunlicherweise nichts her?

von Peter (Gast)


Lesenswert?

Probiere es doch einfach mal mal mittels Datei-Zugriffen auf die 
Filenamen "COM1", "COM2", "LPT1" etc...

von Purzel H. (hacky)


Lesenswert?

Das wuerd ich mir genau nicht antun. Dafuer gibt es Libraries. Probier 
mal die TPApro, zu finden auf sourceforge.net.

von Peter (Gast)


Lesenswert?

>Das wuerd ich mir genau nicht antun.

Wiese nicht! Es ist doch elegant, mit Dateizugriffs-Funktionen auch auf 
Schnitstellen zuzugreifen! Schnittstelle öffnen, schliessen, schreiben, 
lesen...

von spess53 (Gast)


Lesenswert?

Hi

Von der Zeischrift 'Toolbox' gibt es eine sehr umfangreiche Lib. ist 
eigentlich für Delphi. Sollte aber auch für Freepascal gehen.

MfG Spess

von Bernd (Gast)


Lesenswert?

Vielen Dank für eure Beiträge und Hinweise. TPApro & Toolbox werde ich 
suchen & testen. Der Zugriff über die Datei gefällt mir gut. Das Problem 
ist nur, daß ich die Parameter nicht einstellen kann.

von Dirk Fellenberg (Gast)


Lesenswert?

SynaSer

http://synapse.ararat.cz

This is library for blocking communication on serial ports. It is 
non-visual class.

von Bernd (Gast)


Lesenswert?

Danke Dirk für den Link.

von Purzel H. (hacky)


Lesenswert?

Ein Serialport als Blockdevice (Datei) ist etwas das Duemmste, das man 
sich vorstellen kann. Aber Streamdevices gab es damals noch nicht.

von Reinhard Kern (Gast)


Lesenswert?

Mini Troll schrieb:
> Ein Serialport als Blockdevice (Datei) ist etwas das Duemmste, das man
> sich vorstellen kann. Aber Streamdevices gab es damals noch nicht.

was in aller Welt ist damals? vor dem 2. Weltkrieg?

Schon CP/M hat zwischen Char und Block-Devices unterschieden und MSDOS 
sowieso. Und ein Dateizugriff hat auch ganz und garnichts damit zu tun. 
Oder kümmerst du dich etwa darum, ob die Sektoren auf einer Platte 512 
oder 1024 Bytes haben? Man kann eine beliebige Anzahl Bytes sowohl auf 
die Platte schreiben als auch auf COMx oder LPTx, und das schon sehr 
sehr lange.

Gruss Reinhard

von Sebastian Günther (Gast)


Lesenswert?

Hallo,

ich hab die serial-Unit von Free Pascal für Unix vor einiger Zeit für 
ein Projekt schon auf Win32 portiert, wenn ein synchroner Zugriff reicht 
(z.B. über einen Thread)... Wir haben's nur immer noch nicht geschafft, 
die Windoof-Version mal offiziell zur RTL zu packen, v.a. weil die 
Implementierung nicht 100% vollständig ist, verglichen mit der 
Unix-Version.
Bei Bedarf kurz melden (sg@areca.de)
Die ist halt wesentlich leichtgewichtiger als Synapse & Co.


Gruß,
Sebastian
(Original-Autor der Unix-Version)

von Klaus W. (mfgkw)


Lesenswert?

Dirk Fellenberg schrieb:
> SynaSer
>
> http://synapse.ararat.cz
>
> This is library for blocking communication on serial ports. It is
> non-visual class.

Mini Troll schrieb:
> Ein Serialport als Blockdevice (Datei) ist etwas das Duemmste, das man
> sich vorstellen kann. Aber Streamdevices gab es damals noch nicht.

äh, "blocking" mit "block" verwechselt?

von Purzel H. (hacky)


Lesenswert?

>äh, "blocking" mit "block" verwechselt?

Nein. Dateien sind doch immer Block devices. Nein ?

von Klaus W. (mfgkw)


Lesenswert?

Nein
Dateien sind keine Devices, also auch keine block devices.
Vielmehr liegen Dateien in einem Dateisystem, das wiederum
auf einem block device untergebracht ist.

Ein block device ist eines, welches nicht byteweise, sondern
nur in Form von Sektoren, Clustern etc. angesprochen werden kann.
Dateien dagegen können auch zeichenweise gelesen und geschrieben
werden. Die Umsetzung dazwischen macht dann das Dateisystem bzw.
dessen Treiber im OS, soweit es sich tatsächlich um reale Dateien
handelt. Um die geht es hier aber doch eh nicht, sondern es geht
um einen COM-Port, der nie auf einem block device liegt und nur
wie eine Datei (zeichenweise) angesprochen wird.
Mit Blöcken hat das irgendwie nichts zu tun, oder habe ich etwas
übersehen?

von Gerry E. (micky01)


Lesenswert?

Blocking meint in diesem Kontext lediglich, dass ein lesender Prozess 
angehalten wird, bis Daten an der Schnittstelle angekommen sind.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.