2021
HOME

Wine und die Sache mit COM33
Compact Definition Zorin
Download Version 1.76 mit veränderter Hardware-Suche (619k)

Mit der Linux-Distribution Zorin ist es einfach geworden Windows-Programme unter Wine auszuführen. Der 'Nicht-Emulator' Wine legt sofort 32 serielle Schnittstellen an, wobei dann der erste USB-Seriell-Adapter, wie z. B. ein Arduino oder ein ESP, an COM33 ercheint.

Das war Anlass die bisherige Hardwaresuche von Compact den Gegebenheiten heutiger PC anzupassen.

Die Wine-Umgebung unter Linux, die unter Zorin 15.3 Lite 32-bit in der Version 4.0 installiert wird, funktioniert so gut, dass der Quelltext mit allen verstreut verschachtelten Komponenten aus Delphi 7 des Ursprungs-PC mit Windows-XP isoliert und auf die Linux-Plattform kopiert werden konnte. Mit der Personal Edition von Delphi 6 funktioniert alles wie auf dem Original, sogar mit Debugger. Selbst eine RX-Komponente lief nach einer Weile ohne Probleme. Die Hardware-Suche und wenige Bedienelemente liegen in veränderter Form vor. Die Schreiber bekamen einen einfachen Start-/Stop-Button zurück, der auch wieder auf die Eingabetaste reagiert.

Am 8. Dezember 2021 kam Zorin 16 Lite 64-bit und Wine 5.0.3. Bis auf kleine grafische Details funktioniert hier alles genauso - auch vom Live-USB-Stick.
Hardware-Suche bis COM255
Anhand der Software Arduino meets Compact auf dieser Seite kann man die halbautomatische Suche mit einem Arduino testen. Unter Zorin oder jedem anderen Linux muss allerdings noch der Zugriff auf die serielle Schnittstellen erlaubt werden. Dies erfolgt zum Beispiel durch die Eingabe von folgender Zeile in einem Terminal-Fenster:

sudo usermod -aG dialout BENUTZERNAME

Nach einem Logout und Login sollte die Schnittstelle dem Benutzer zugänglich sein. Wine scheint die Schnittstellen erst zu aktualisieren, wenn ein Windows-Programm gestartet wird. Im Benutzer-Verzeichnis liegt ein verstecktes Verzeichnis .wine mit den Ordnern für die Schnittstellen und dem Windows-Laufwerk C. Dort lässt sich beobachten, ob COM ab 33 vorhanden und aktiv sind.

Unter Windows funktioniert alles fast wie bisher. Der Ablauf ist nun wie folgt:

  • Gerät anstecken und Compact-Definition starten
  • Auf Tab Ein-/Ausgänge wechseln und Hardware suchen drücken
  • Vorgeschlagene COM-Schnittstelle bestätigen oder ablehnen
  • Gerät wird an der bestätigten Schnittstelle gesucht.

Die Suche beginnt bei COM1 und es wird versucht die Schnittstelle zu öffnen. Bei Verwendung mehrerer Geräte ist dies zu berücksichtigen. Bei gedrückter Strg-Taste erfolgen weitere Informationen zum Suchvorgang.

Auch der Raspberry Pi Pico als CompuLab aus den Kapiteln 4.8 und 6.8 des Buches MSR mit MicroPython und RP2040 funktioniert mit dieser Version bisher problemfrei.


Compact gibt es bereits in verschiedenen Varianten:


RSAPI-Wine Download Zip (28,7k)
Die veränderte Hardware-Suche befindet sich nun auch in einer weiteren Test-Version der RSAPI mit der Versionsnummer 1.76, die es ermöglicht die im Buch Messen, Steuern und Regeln mit Word und Excel gemachten Ausführungen auch unter Linux und Wine zu realisieren.

FINDHARD 1 zeigt in dieser Version die Wahl der Schnittstelle und die gefundene Hardware. FINDHARD 0 sucht ohne Nachfrage an der ersten verfügbaren Schnittstelle.

Mit der Word97-Installation von einer CD früher erworbener Hardware konnte der Arduino als CompuLab aus Word heraus unter Wine und Zorin 16 gefunden werden. Die DLL liegt dabei im entsprechenden Windows-Verzeichnis, es kann aber auch ein beliebiger Pfad in der Deklaration angegeben sein.

Auch diese, für Wine modifizierte, Test-Version konnte vollständig in dieser Umgebung erstellt werden.

Ausgangspunkt war die Version 1.7, die schon länger als Delphi-Variante hier auf der Seite bei den FAQ zum Buch verlinkt ist.


Ist die Schnittstelle bekannt an der der Arduino bzw. der Pi Pico angeschlossen ist und läuft der zweite Sketch aus dem Beitrag Arduino meets Compact, bzw. das Äquivalent in MicroPython, kann auch manuell verfahren werden, ohne die halbautomatische Suche FINDHARD zu bemühen. Nach dem Öffnen der Schnittstelle wird der DLL mit SETHARD mitgeteilt, dass die Routinen für diese Hardware Verwendung finden sollen. Bei richtiger Funktion sollte nur die eingebaute LED an Pin 13 leuchten, da dies Bit 2 hoch 3 ist laut Sketch und somit einer 8 entspricht.

Declare Function VERSION Lib "rsapiwine.dll" (ByVal m%) As Integer
Declare Function OPENCOM Lib "rsapiwine.dll" (ByVal A$) As Integer
Declare Function SETHARD Lib "rsapiwine" (ByVal m%) As Integer
Declare Function DOUT Lib "rsapiwine.dll" (ByVal m%) As Integer
Declare Function DIN Lib "rsapiwine.dll" () As Integer
Declare Function AIN Lib "rsapiwine.dll" (ByVal m%) As Integer

Sub HardSet()
 Debug.Print OPENCOM("COM33:9600,N,8,1")
 SETHARD 3 'Arduino als CompuLab
 DOUT 8    'Arduino LED 13
 Debug.Print DIN, AIN(1), AIN(2), VERSION(0)
End Sub
Getestet unter Zorin 15.3 Lite 32-bit mit Wine 4.0.3 und Word97.
.
Startseite Bücher Software Digital RTV Musik Kontakt

Für Inhalt und weitere Verzweigung externer Links sind die Betreiber der dortigen Seiten verantwortlich - H.-J. Berndt