Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
LCDHype mit Wine unter Linux
#1
Hallo,

ich möchte das Thema LCDHype unter Linux gerne aufgreifen.
Als letzter Rechner hat nun auch auf meinem Multimedia-Rechner Windblöd ausgedient.
Alles funktioniert letzten Endes besser und stabiler unter Linux, nur die Ansteuerung eines LCD-Displays fehlt.
Dafür gibt es in Linux noch immer keinen adäquaten Ersatz für LCDHype.

Ich habe ein 128x64 Grafik-Display mit KS0108 in dem Rechner eingebaut und würde dieses auch gerne nutzen.
Hier hatte ich zuletzt leider auch Probleme dieses stabil mit LCDHype unter XP zu betreiben.
Den Fehlern möchte ich aber nicht mehr weiter auf den Grund gehen.

Es wäre einfach fantastisch wenn es möglich wäre LCDHype fit für Linux zu bekommen!

Natürlich hat es inzwischen schon einen Anlauf gegeben, LCDHype für Linux neu zu schreiben:
http://ssl.bulix.org/projects/lcd4linux/
Aber leider ist die Entwicklung hier 2007 stehen geblieben und offensichtlich immer noch nicht in der Lage ein Grafik-Display anzusteuern.
Letzte Version: LCD4Linux-0.10.1-RC2 (2007-04-30)

Es ist nachvollziehbar das es mit sehr viel Aufwand verbunden ist das Rad neu zu erfinden.
Daher denke ich das es viel einfacher und besser wäre, wenn die Original-Version von LCDHype unter Linux funktionieren würde.

Hierzu gibt es auch einen älteren Kommentar, wo es angeblich schon einmal funktioniert haben soll:
Trekki Posted: January 30, 2005 12:43 pm
http://lcdhype.condense.de/index.php?showtopic=1626
Wie man sieht ist dies schon länger her ...

Ich habe nun mit der aktuellen Version 0.7 einen neuen Versuch gestartet und bin leider gescheitert.
In dem Screenshot kann man sehen das nach der Installation LCDHype noch nicht einmal startet und sich mit ominösen Fehlern verabschiedet.
Getestet habe ich dies unter Wine Version 1.1.17, welches mit vielen anderen Windows-Applikationen sehr stabil läuft.

Ich habe es auch noch Mal mit dem aktuellen Wine Version 1.1.35 getestet.
Die läuft nicht so stabil, aber LCDHype kam hier immerhin bis zu dem Splash-Screen ohne Fensterrahmen - dann hing es leider.

Meine Frage ist nun was sich in der Entwicklung seit 2005 wesentliches getan hat das dies nicht mehr funktioniert?
Wine hat sich eigentlich eher positiv weiterentwickelt und unterstützt immer mehr Windows-API-Funktionen.
Also muss es an dem Aufruf von speziellen Funktionen bzw. Libraries liegen.

Gibt es eine Chance das man LCDHype so weit anpassen könnte das dies unter Wine wieder läuft?

Eigentlich sehe ich theoretisch keine grossen Hinderungsgründe, schliesslich hat es ja wohl schon mal funktioniert.

1. Wine kann auf die serielle und parallele Schnittstelle zugreifen.
Z.B. ist LPT1 einfach auf /dev/lp0 gelinkt.

2. Eine Anpassung von vielen Treibern auf der Eingangsseite ist nicht notwendig, da eigentlich alle interessanten Systemparameter auf Shell-Ebene abfragbar sind. Hier reicht also die Möglichkeit eines Shell-Aufrufs mit der Rückgabe von Text.
Die Prgramme mit denen man Audio und Video abspielt sind sowieso andere, und haben meist auch schon genügend Schnittstellen nach aussen hin.
Auch hier kann man meistens einfach über eine Dateischnittstelle o.ä. arbeiten.
In diesen Dingen kann ich auch gerne weiterhelfen, da kenne ich mich gut aus.

3. Entscheidend sind vor allem die Treiber für die LCD-Displays, an denen nichts geändert werden muss.


Die Oberfläche von LCDHype ist sehr schön mit viel Liebe zu Details gestaltet, was für Linux aber nicht unbedingt benötigt wird.
Ich denke das hier viele Inkompatibilitätsprobleme mit Wine begraben sind.
Das Problem ist hier die Windows-API, die in Wine natürlich dem Windows zeitlich immer hinterherhinkt.
Diese ist für Wine hier beschrieben: http://source.winehq.org/WineAPI/

Vielleicht ist es ja möglich die eigentliche "LCDHype-Engine" auch ohne Windows-Zauber zu nutzen?
Damit meine ich die reine Abarbeitung der Skripte und Nutzung vor allem der LCD-Treiber.
Die Skripte kann man problemlos auch mit einem anderen Editor erstellen bzw. bearbeiten.
Für die Konfiguration gilt evtl. das Gleiche.

Ich möchte darauf hinaus das es nicht 2 Versionen von LCDHype geben soll, sondern 1 LCDHype welches evtl. 2 Betriebsmodi beherrscht.
Damit könnte man die meisten Inkompatibilitätsprobleme wahrscheinlich umschiffen und trotzdem den vollen Funktionsumfang für Windows erhalten.

Ist mein Vorschlag utopisch?


Attached Files Thumbnail(s)
   
#2
da ich ja in letzter zeit daran bin einige sache neu zu schreiben, habe ich natuerlich auch immer an dieses thema gedacht. in der 0.7er version wurde die scriptengine und konfigurationsschnittstelle komplett überarbeitet. hier hab ich schon drauf geschaut das so viel wie möglich unabhängig von der gui arbeiten kann.

derzeit bin ich dran auch das treiberinterface komplett neu zu machen, da es mit dem alten einfach nicht mehr weitergeht, ich kann also gerade nicht einfach auf diesen "linux port" umswitchen, dann gibts ein chaos.

es sollte grundsätzlich möglich sein die gui von lcdhype zu lösen, so das nur noch der kern arbeitet. das benötigt aber zeit.

warum das in wine nicht läuft kann ich dir nich sagen. man könnte mal schauen was hinter dem klassenstring 88d96a05-f192-11d4-a65f-004096325le5 steckt. bei mir in der registry konnte ich es nicht finden (windows 7). wenn das keine ergebnisse bringt kann man in lcdhype nur schritt für schritt vorgehen, erst alles rausnehmen und schritt für schritt wieder rein, solange bis es kracht.

die kannst ja auch mal das logging einschalten, config.xml, logging tag, enabled auf true setzen. dann schreibt er ein logfile in log\.
Current stable version of LCDHype: 0.7.6
New plugin: Notepad++ Bookmark Manager
New music: Nordwise - Empire transition
#3
Ich werte dies schon Mal als eine positive Nachricht. smile.gif

Eigentlich steht einer Lösung der Probleme nichts im Wege - ganz im Gegenteil - Du arbeitest sogar schon daran.

Wenn ich Dich mit Tests in irgendeiner Weise unterstützen kann, lasse es mich bitte wissen.
Ich werde am Wochenende auf jeden Fall schon mal die Debug-Option einschalten und das Ergebnis hier posten.
Vielleicht sind die Probleme ja gar nicht so schwerwiegend wie es zur Zeit aussieht.

Karsten
#4
So - ich habe soeben nochmal mit eingeschaltetem Debugging getestet.
Das Ergebnis des Debugging (statuslog.txt) ist sehr ernüchternd:

CODE
INFO 08.01. 19.44.29
INFO 08.01. 19.44.29
INFO 08.01. 19.44.29
INFO 08.01. 19.44.29
INFO 08.01. 19.44.38
INFO 08.01. 19.47.04
INFO 08.01. 19.47.04
INFO 08.01. 19.47.04
INFO 08.01. 19.47.04
INFO 08.01. 19.47.04
INFO 08.01. 19.47.04
INFO 08.01. 19.47.04
INFO 08.01. 19.47.04
INFO 08.01. 19.47.04
INFO 08.01. 19.47.04


Aber dafür habe ich anderes herausgefunden was hilfreich sein sollte.

Wenn man nur geduldig die aufpoppenden Fehlermeldung mit OK bestätigt, dann kommt irgendwann doch noch der Splash-Screen.
Danach wird das Hauptfenster wie unten zu sehen geöffnet und es gibt eine Exeption.
Dann ist natürlich leider Ende im Gelände.

Zu den aufpoppenden Fehlermeldungen gehört (in chronologischer Reihenfolge):
Definition "x" is corrupt. Cannot find StatusLog_SuspendingMachine.
Definition "x" is corrupt. Cannot find StatusLog_ResumingMachine.
Definition "x" is corrupt. Cannot find StatusLog_ProcessingFunctionCall.
Definition "x" is corrupt. Cannot find StatusLog_StartingApp.
Definition "x" is corrupt. Cannot find StatusLog_StartingAppEnd.
Definition "x" is corrupt. Cannot find StatusLog_ClosingApp.
Definition "x" is corrupt. Cannot find StatusLog_NoPDHDetected.
...
Definition "x" is corrupt. Cannot find Cannot find Splash_PDH.

Diese Fehler korrespondieren mit den Fehlermeldungen "fixme:win:WINNLSEnableIME hUnknown1 0x100058 bUnknown2 0: stub!" auf der Shell.

Das scheinen definitiv Windows-Elemente zu sein die nicht gefunden werden.
Hier noch Mal der vollständige Output von Wine auf der Shell:

CODE
>:/wine/drive_c/Programme/LCDHype> wine lcdhype.exe
fixme:font:get_nearest_charset TCI failing on 20000000
fixme:font:get_nearest_charset returning DEFAULT_CHARSET face->fs.fsCsb[0] = 20000000 file = /usr/share/fonts/truetype/ttf-gujarati-fonts/aakar-medium.ttf
err:ole:CoGetClassObject class {88d96a05-f192-11d4-a65f-0040963251e5} not registered
err:ole:create_server class {88d96a05-f192-11d4-a65f-0040963251e5} not registered
err:ole:CoGetClassObject no class object {88d96a05-f192-11d4-a65f-0040963251e5} could be created for context 0x5
err:ole:CoGetClassObject class {88d969c0-f192-11d4-a65f-0040963251e5} not registered
err:ole:create_server class {88d969c0-f192-11d4-a65f-0040963251e5} not registered
err:ole:CoGetClassObject no class object {88d969c0-f192-11d4-a65f-0040963251e5} could be created for context 0x5
err:ole:CoGetClassObject class {88d96a05-f192-11d4-a65f-0040963251e5} not registered
err:ole:create_server class {88d96a05-f192-11d4-a65f-0040963251e5} not registered
err:ole:CoGetClassObject no class object {88d96a05-f192-11d4-a65f-0040963251e5} could be created for context 0x5
err:ole:CoGetClassObject class {88d969c0-f192-11d4-a65f-0040963251e5} not registered
err:ole:create_server class {88d969c0-f192-11d4-a65f-0040963251e5} not registered
err:ole:CoGetClassObject no class object {88d969c0-f192-11d4-a65f-0040963251e5} could be created for context 0x5
err:ole:CoGetClassObject class {88d96a05-f192-11d4-a65f-0040963251e5} not registered
err:ole:create_server class {88d96a05-f192-11d4-a65f-0040963251e5} not registered
err:ole:CoGetClassObject no class object {88d96a05-f192-11d4-a65f-0040963251e5} could be created for context 0x5
err:ole:CoGetClassObject class {88d969c0-f192-11d4-a65f-0040963251e5} not registered
err:ole:create_server class {88d969c0-f192-11d4-a65f-0040963251e5} not registered
err:ole:CoGetClassObject no class object {88d969c0-f192-11d4-a65f-0040963251e5} could be created for context 0x5
err:ole:CoGetClassObject class {88d96a05-f192-11d4-a65f-0040963251e5} not registered
err:ole:create_server class {88d96a05-f192-11d4-a65f-0040963251e5} not registered
err:ole:CoGetClassObject no class object {88d96a05-f192-11d4-a65f-0040963251e5} could be created for context 0x5
err:ole:CoGetClassObject class {88d969c0-f192-11d4-a65f-0040963251e5} not registered
err:ole:create_server class {88d969c0-f192-11d4-a65f-0040963251e5} not registered
err:ole:CoGetClassObject no class object {88d969c0-f192-11d4-a65f-0040963251e5} could be created for context 0x5
fixme:win:WINNLSEnableIME hUnknown1 0x40080 bUnknown2 0: stub!
fixme:win:WINNLSEnableIME hUnknown1 0x40080 bUnknown2 -1: stub!
fixme:win:WINNLSEnableIME hUnknown1 0x50080 bUnknown2 0: stub!
fixme:win:WINNLSEnableIME hUnknown1 0x50080 bUnknown2 -1: stub!
fixme:win:WINNLSEnableIME hUnknown1 0x60080 bUnknown2 0: stub!
fixme:win:WINNLSEnableIME hUnknown1 0x60080 bUnknown2 -1: stub!
fixme:win:WINNLSEnableIME hUnknown1 0x70080 bUnknown2 0: stub!
fixme:win:WINNLSEnableIME hUnknown1 0x70080 bUnknown2 -1: stub!
fixme:win:WINNLSEnableIME hUnknown1 0x80080 bUnknown2 0: stub!
fixme:win:WINNLSEnableIME hUnknown1 0x80080 bUnknown2 -1: stub!
fixme:win:WINNLSEnableIME hUnknown1 0x90080 bUnknown2 0: stub!
fixme:win:WINNLSEnableIME hUnknown1 0x90080 bUnknown2 -1: stub!
fixme:win:WINNLSEnableIME hUnknown1 0xa0080 bUnknown2 0: stub!
fixme:win:WINNLSEnableIME hUnknown1 0xa0080 bUnknown2 -1: stub!
fixme:win:WINNLSEnableIME hUnknown1 0xb0080 bUnknown2 0: stub!
fixme:win:WINNLSEnableIME hUnknown1 0xb0080 bUnknown2 -1: stub!
fixme:win:WINNLSEnableIME hUnknown1 0xc0080 bUnknown2 0: stub!
fixme:win:WINNLSEnableIME hUnknown1 0xc0080 bUnknown2 -1: stub!
fixme:win:WINNLSEnableIME hUnknown1 0xd0080 bUnknown2 0: stub!
fixme:win:WINNLSEnableIME hUnknown1 0xd0080 bUnknown2 -1: stub!
fixme:win:WINNLSEnableIME hUnknown1 0xe0080 bUnknown2 0: stub!
fixme:win:WINNLSEnableIME hUnknown1 0xe0080 bUnknown2 -1: stub!
fixme:win:WINNLSEnableIME hUnknown1 0xf0080 bUnknown2 0: stub!
fixme:win:WINNLSEnableIME hUnknown1 0xf0080 bUnknown2 -1: stub!
fixme:win:WINNLSEnableIME hUnknown1 0x100080 bUnknown2 0: stub!
fixme:win:WINNLSEnableIME hUnknown1 0x100080 bUnknown2 -1: stub!
fixme:win:WINNLSEnableIME hUnknown1 0x110080 bUnknown2 0: stub!
fixme:win:WINNLSEnableIME hUnknown1 0x110080 bUnknown2 -1: stub!
fixme:win:WINNLSEnableIME hUnknown1 0x120080 bUnknown2 0: stub!
fixme:win:WINNLSEnableIME hUnknown1 0x120080 bUnknown2 -1: stub!
fixme:win:WINNLSEnableIME hUnknown1 0x130080 bUnknown2 0: stub!
fixme:win:WINNLSEnableIME hUnknown1 0x130080 bUnknown2 -1: stub!
fixme:win:WINNLSEnableIME hUnknown1 0x140080 bUnknown2 0: stub!
fixme:win:WINNLSEnableIME hUnknown1 0x140080 bUnknown2 -1: stub!
fixme:win:WINNLSEnableIME hUnknown1 0x150080 bUnknown2 0: stub!
fixme:win:WINNLSEnableIME hUnknown1 0x150080 bUnknown2 -1: stub!
fixme:win:WINNLSEnableIME hUnknown1 0x160080 bUnknown2 0: stub!
fixme:win:WINNLSEnableIME hUnknown1 0x160080 bUnknown2 -1: stub!
fixme:win:WINNLSEnableIME hUnknown1 0x170080 bUnknown2 0: stub!
fixme:win:WINNLSEnableIME hUnknown1 0x170080 bUnknown2 -1: stub!
fixme:win:WINNLSEnableIME hUnknown1 0x170080 bUnknown2 0: stub!
fixme:win:WINNLSEnableIME hUnknown1 0x170080 bUnknown2 -1: stub!
fixme:win:WINNLSEnableIME hUnknown1 0x170080 bUnknown2 0: stub!
fixme:win:WINNLSEnableIME hUnknown1 0x170080 bUnknown2 -1: stub!
fixme:win:WINNLSEnableIME hUnknown1 0x170080 bUnknown2 0: stub!
fixme:win:WINNLSEnableIME hUnknown1 0x170080 bUnknown2 -1: stub!
fixme:win:WINNLSEnableIME hUnknown1 0x170080 bUnknown2 0: stub!
fixme:win:WINNLSEnableIME hUnknown1 0x170080 bUnknown2 -1: stub!
wine: Call from 0x7edcfd90 to unimplemented function pdh.dll.PdhConnectMachineA, aborting


Attached Files Thumbnail(s)
   
#5
zum log bzw allgemein: sieht so aus als hätte wine da probleme mit unicode anwendungen, der grossteil von lcdh7 ist auf unicode umgestellt. wie sieht das bei älteren versionen aus?

die meldung "definition % is corrupt" kommt dann wenn er aus er package.dat einen wert lesen will der in einem bestimmten block beginnend mit //% steht. frage is jetzt wie kommt da bei dir das "x" hin? normalerweise müsste da die sprache stehen. auch wieder unicode problem denk ich.

gegen die exception kannst du was machen, lösche oder benenne einfach mal die pdh.dll um. dann sollte lcdhype diese nicht mehr ifnden und dann sind halt die PDH funktionen deaktiviert.








Current stable version of LCDHype: 0.7.6
New plugin: Notepad++ Bookmark Manager
New music: Nordwise - Empire transition
#6
Die DLL habe ich jetzt erst einmal umbenannt: "pdhapi.dll.bak"


Hmm - eigentlich sollte Wine UTF8 problemlos unterstützen, da dies von Linux auch getan wird.
Siehe dazu hier: http://wiki.winehq.org/TestingLanguages
Ich habe auch noch Mal einen expliziten Test gemacht und vorher die Sprache auf DE.UTF-8 gesetzt
CODE
export LANG=de_DE.UTF-8

Es hatte aber keine Auswirkung.


Danach habe ich erst einmal die verschiedenen Emulationsmethoden von Wine ausprobiert.
Hier ist ja alles von Win95 bis Win2008 möglich.
Was die Unterschiede im einzelnen ausmacht ist natürlich die Frage?

http://www.winehq.org/docs/wineusr-guide...-wine-main
QUOTE
Wine has the ability to mimic the behavior of different versions of Windows. In general, the biggest difference is whether Wine behaves as a Win9x version or an NT version. Some applications require a specific behavior in order to function and changing this setting may cause a buggy app to work. Recently Wine's default Windows version has changed to Windows 2000. It's known that many applications will perform better if you choose Windows 98.



Ich habe also mal von ME bis Win2008 alles ausprobiert und den Output der Shellausgabe in die beigefügten Log-Dateien umgelenkt.
Generell war es so das alles bis XP das bisherige Verhalten gezeigt hat.
Also die vielen Popups mit Fehlermeldungen, dann kam der Spash-Screen und dann endlos weitere Popups von Fehlermeldungen, so lange bis ich keine Lust mehr hatte zu klicken und die App gekillt habe.
Es gab auch noch eine Exception in ASUS_OLED_Plugin.dll, die aber nicht zum Abbruch geführt hat.

Bei Vista und 2008 gab es ein gänzlich anderes verhalten.
Es gab keine Fehler-Popups sondern die App verabschiedete sich mit den Fehlermeldungen wie sie in den LOG`s zu sehen sind.

Somit bin ich dem Problem bzw. seiner Lösung leider noch nicht näher gekommen. sad.gif
Ich werde jetzt gleich noch Mal eine ältere Version von LCDHype ausprobieren.


Attached Files
.zip   LCDHype_Winelogs.zip (Size: 11,36 KB / Downloads: 243)
#7
Ich habe jetzt LCDHype V 0.6 installiert und habe erheblich größeren Erfolg. smile.gif

Zuerst einmal habe ich es wieder in der XP-Emulation probiert.
Natürlich musste ich erst einmal die DLL wieder umbenennen sonst verstarb es.
Wozu wird die überhaupt benötigt?

Dann startete LCDHype immerhin schon Mal, allerdings stürzte dann etwas irgendwie ab und ich habe meine Mauskontrolle verloren.
Also musste ich die Prozesse alle killen um wieder die Oberhand zu gewinnen.

Dann habe ich die Win2000-Emulation probiert und die lief schon sehr gut ohne grosse Probleme.
Allerdings wurden keine Port-Treiber gefunden, da muss ich also bei meinem nächsten Versuch aufsetzen.
Ob ich da diese ominösen NT-IO-Treiber installieren muss - die sind ja schliesslich für den Win-Kernel?

Zuletzt habe ich dann mal das Update auf V 0.6.0.5 darüber kopiert.
Dann funktionierte LCDHype allerdings nicht mehr. Runtime Error!


Attached Files
.zip   LCDHype_Winelogs_0.6.zip (Size: 3,55 KB / Downloads: 257)
#8
also probier erstmal nur mit der 0.6, wenn die schon sehr gut läuft. im controller verzeichnis würde ich auch alles wegmachen ausser preview. dann brauchst du schonmal den port treiber nicht.

die pdh.dll is für das ranholen der performance daten von windows verantwortlich. es gibt ja in windows ne pdh api (performance data helper api). durch diese kann man sehr viele performancerelevante sachen abfragen wie zugriffe auf die festplatte, datendruchsatz, etc.

du kannst auch die data\screensave.dll mal wegnehmen. dann fällt hier auch schonmal das hook verhalten für den screensaver weg, vieleicht gibts da auch probleme.

ps: die logs sagen mir nicht wirklich viel nur das halt hier und da irgendwas nicht gefunden wird.

und wenn du am anfang einen fehlerdialog kriegst ala "definition .. corrupt", dann brauchst du eigentlich garnich weiter zu machen, dann haut da irgendwas mit den dateizugriffen nich hin.
Current stable version of LCDHype: 0.7.6
New plugin: Notepad++ Bookmark Manager
New music: Nordwise - Empire transition
#9
Zur Zeit komme ich leider nicht dazu dies alles in Ruhe auszuprobieren.
Ich werde weiterhin berichten sobald ich dazu komme ...
#10
Wenn's mal wieder länger dauert ...

O.K. ich habe nun auch noch die 2. DLL umbenannt: "screensaver.dll.bak"

Die Installation von "SPPort95NT Driver.exe" läuft durch, der Treiber scheint danach gefunden zu werden, allerdings kann der Porttreiber trotzdem nicht geladen werden.

QUOTE
DLPORTIO.SYS device driver not loaded.
Port I/O will have no effect.


Ich habe danach auch noch Mal die manuelle Installation durchgeführt und die Registry-Einträge kontrolliert - die beiden Dateien stehen ordnungsgemäß eingetragen - daran liegt es nicht.


Tja - was nun?
Ich denke mal das Wine einen Zugriff auf das Device LPT1 erwartet.
Dieses ist dann eine einfache Umlenkung auf /dev/lp0.
Wie ein immer auch gearteter Hardware-Treiber für NT hier funktionieren soll ist mir auch schleierhaft.


Auch auf die Gefahr hin das keine brauchbaren Informationen enthalten sind - hier der Shell-Output:

CODE
wine: Unhandled page fault on write access to 0x00650120 at address 0x7ef41a9e (thread 0016), starting debugger...
err:menubuilder:WinMain unknown option -a
err:menubuilder:WinMain unknown option -r
Unhandled exception: page fault on write access to 0x00650120 in 32-bit code (0x7ef41a9e).
Register dump:
CS:0023 SS:002b DS:002b ES:002b FS:0063 GS:006b
EIP:7ef41a9e ESP:0064e640 EBP:0064e6e8 EFLAGS:00010246(   - 00      -RIZP1)
EAX:00650080 EBX:7ef43114 ECX:00000000 EDX:0064e628
ESI:00000052 EDI:00000000
Stack dump:
0x0064e640:  00652000 00001000 00000020 00000000
0x0064e650:  00000000 7efe3820 00110014 7ef79331
0x0064e660:  00110058 ffffffff 00113de8 7ef89826
0x0064e670:  00110000 7efe3820 0064e688 7ef792ee
0x0064e680:  00110058 7efe3820 0064e6e8 7ef8c39f
0x0064e690:  00110054 00000058 00000000 00113ed4
Backtrace:
=>0 0x7ef41a9e load_driver_module+0x1fe(name=0x113df0) [/mnt/ramdisk/wine-1.1.17~winehq1/programs/winedevice/device.c:103] in winedevice (0x0064e6e8)
 1 0x7ef4236e load_driver+0x402() [/mnt/ramdisk/wine-1.1.17~winehq1/programs/winedevice/device.c:229] in winedevice (0x0064e958)
 2 0x7ef4266e ServiceMain+0x11f(argc=1, argv=0x113dd8) [/mnt/ramdisk/wine-1.1.17~winehq1/programs/winedevice/device.c:287] in winedevice (0x0064e9b8)
 3 0x7ebbdf10 service_thread+0x156(arg=0x1138f8) [/mnt/ramdisk/wine-1.1.17~winehq1/dlls/advapi32/service.c:294] in advapi32 (0x0064ea18)
 4 0x7efc126a call_thread_entry_point+0xe() in ntdll (0x0064ea28)
 5 0x7efc12f2 call_thread_func+0x86(rtl_func=0x7ebbddba, arg=0x1138f8) [/mnt/ramdisk/wine-1.1.17~winehq1/dlls/ntdll/thread.c:432] in ntdll (0x0064eac8)
 6 0x7efc14b6 start_thread+0x121(info=0x7ffd0fb8) [/mnt/ramdisk/wine-1.1.17~winehq1/dlls/ntdll/thread.c:491] in ntdll (0x0064f3c8)
 7 0xf7da7195 start_thread+0xab() in libpthread.so.0 (0x0064f4c8)
 8 0xf7d2c4ce __clone+0x5e() in libc.so.6 (0x00000000)
0x7ef41a9e load_driver_module+0x1fe [/mnt/ramdisk/wine-1.1.17~winehq1/programs/winedevice/device.c:103] in winedevice: movl     $0x0,0xa0(%eax)
Unable to open file ''
Modules:
Module  Address                 Debug info      Name (25 modules)
PE        650000-  656000       Deferred        dlportio.sys
ELF     7bf00000-7bf03000       Deferred        
ELF     7eaba000-7eb27000       Deferred        rpcrt4
 \-PE  7ead0000-7eb27000       \               rpcrt4
ELF     7eb46000-7eb80000       Deferred        ntoskrnl
 \-PE  7eb50000-7eb80000       \               ntoskrnl
ELF     7eb80000-7ebd9000       Dwarf           advapi32
 \-PE  7eb90000-7ebd9000       \               advapi32
ELF     7ebd9000-7ebe4000       Deferred        libnss_files.so.2
ELF     7ebe4000-7ebee000       Deferred        libnss_nis.so.2
ELF     7ebee000-7ec06000       Deferred        libnsl.so.1
ELF     7edb7000-7ef02000       Deferred        kernel32
 \-PE  7edd0000-7ef02000       \               kernel32
ELF     7ef02000-7ef26000       Deferred        libm.so.6
ELF     7ef30000-7ef44000       Dwarf           winedevice
 \-PE  7ef40000-7ef44000       \               winedevice
ELF     7ef44000-7f000000       Dwarf           ntdll
 \-PE  7ef60000-7f000000       \               ntdll
ELF     f7c40000-f7c49000       Deferred        libnss_compat.so.2
ELF     f7c4b000-f7c4f000       Deferred        libdl.so.2
ELF     f7c4f000-f7da1000       Export          libc.so.6
ELF     f7da1000-f7db8000       Export          libpthread.so.0
ELF     f7dd3000-f7dd6000       Deferred        iso8859-1.so
ELF     f7dd6000-f7f13000       Deferred        libwine.so.1
ELF     f7f16000-f7f35000       Deferred        ld-linux.so.2
Threads:
process  tid      prio (all idConfused are in hex)
00000008
       00000009    0
0000000a
       0000000b    0
0000000e
       00000015    0
       00000014    0
       00000010    0
       0000000f    0
00000011 (D) C:\windows\system32\winedevice.exe
       00000016    0 <==
       00000013    0
       00000012    0
Backtrace:
=>0 0x7ef41a9e load_driver_module+0x1fe(name=0x113df0) [/mnt/ramdisk/wine-1.1.17~winehq1/programs/winedevice/device.c:103] in winedevice (0x0064e6e8)
 1 0x7ef4236e load_driver+0x402() [/mnt/ramdisk/wine-1.1.17~winehq1/programs/winedevice/device.c:229] in winedevice (0x0064e958)
 2 0x7ef4266e ServiceMain+0x11f(argc=1, argv=0x113dd8) [/mnt/ramdisk/wine-1.1.17~winehq1/programs/winedevice/device.c:287] in winedevice (0x0064e9b8)
 3 0x7ebbdf10 service_thread+0x156(arg=0x1138f8) [/mnt/ramdisk/wine-1.1.17~winehq1/dlls/advapi32/service.c:294] in advapi32 (0x0064ea18)
 4 0x7efc126a call_thread_entry_point+0xe() in ntdll (0x0064ea28)
 5 0x7efc12f2 call_thread_func+0x86(rtl_func=0x7ebbddba, arg=0x1138f8) [/mnt/ramdisk/wine-1.1.17~winehq1/dlls/ntdll/thread.c:432] in ntdll (0x0064eac8)
 6 0x7efc14b6 start_thread+0x121(info=0x7ffd0fb8) [/mnt/ramdisk/wine-1.1.17~winehq1/dlls/ntdll/thread.c:491] in ntdll (0x0064f3c8)
 7 0xf7da7195 start_thread+0xab() in libpthread.so.0 (0x0064f4c8)
 8 0xf7d2c4ce __clone+0x5e() in libc.so.6 (0x00000000)
fixme:font:get_nearest_charset TCI failing on 20000000
fixme:font:get_nearest_charset returning DEFAULT_CHARSET face->fs.fsCsb[0] = 20000000 file = /usr/share/fonts/truetype/ttf-gujarati-fonts/aakar-medium.ttf
err:module:import_dll Library ftd2xx.dll (which is needed by L"C:\\Programme\\LCDHype\\controller\\predator_mf_usb_pcd8544\\USB_PCD8544.dll") not found
err:module:import_dll Library libusb0.dll (which is needed by L"C:\\Programme\\LCDHype\\controller\\alphacool_usb_display200x64\\acusb_display200.dll") not found
fixme:actctx:parse_depend_manifests Could not find dependent assembly L"Microsoft.VC80.CRT"
err:module:import_dll Library MSVCR80.dll (which is needed by L"C:\\Programme\\LCDHype\\controller\\noritake_gu192x16-800\\noritake_gu192x16-800.dll") not found
err:module:import_dll Library FTD2XX.dll (which is needed by L"C:\\Programme\\LCDHype\\controller\\sed133x_usb\\LUI\\LUIse.DLL") not found
err:module:import_dll Library libusb0.dll (which is needed by L"C:\\Programme\\LCDHype\\controller\\alphacool_usb_display240x128\\acusb_display240.dll") not found
fixmeConfusedhdocvwTongueersistStreamInit_Load (0x148bd0)->(0x15987c8)
fixmeConfusedhdocvw:navigate_url Unsupported args (Flags 0x54596c:10; TargetFrameName 0x54596c:10)
fixme:urlmon:URLMonikerImpl_BindToObject use running object table
fixmeConfusedhdocvw:BindStatusCallback_OnProgress status code 11
fixmeConfusedhdocvw:BindStatusCallback_OnProgress status code 14
fixmeConfusedystem:SetProcessDPIAware stub!
fixme:dwmapiBig GrinwmIsCompositionEnabled 0x32e67c
0[159d048]: nsNativeModuleLoader::LoadModule("C:\windows\gecko\0.9.1\wine_gecko\smime3.dll") - Symbol NSGetModule not found
0[159d048]: nsNativeModuleLoader::LoadModule("C:\windows\gecko\0.9.1\wine_gecko\sqlite3.dll") - Symbol NSGetModule not found
0[159d048]: nsNativeModuleLoader::LoadModule("C:\windows\gecko\0.9.1\wine_gecko\nspr4.dll") - Symbol NSGetModule not found
fixme:iphlpapi:NotifyAddrChange (Handle 0x44be888, overlapped 0x44be890): stub
0[159d048]: nsNativeModuleLoader::LoadModule("C:\windows\gecko\0.9.1\wine_gecko\xpcom.dll") - Symbol NSGetModule not found
0[159d048]: nsNativeModuleLoader::LoadModule("C:\windows\gecko\0.9.1\wine_gecko\nssutil3.dll") - Symbol NSGetModule not found
0[159d048]: nsNativeModuleLoader::LoadModule("C:\windows\gecko\0.9.1\wine_gecko\freebl3.dll") - Symbol NSGetModule not found
0[159d048]: nsNativeModuleLoader::LoadModule("C:\windows\gecko\0.9.1\wine_gecko\plds4.dll") - Symbol NSGetModule not found
0[159d048]: nsNativeModuleLoader::LoadModule("C:\windows\gecko\0.9.1\wine_gecko\xul.dll") - Symbol NSGetModule not found
0[159d048]: nsNativeModuleLoader::LoadModule("C:\windows\gecko\0.9.1\wine_gecko\plc4.dll") - Symbol NSGetModule not found
0[159d048]: nsNativeModuleLoader::LoadModule("C:\windows\gecko\0.9.1\wine_gecko\nssckbi.dll") - Symbol NSGetModule not found
0[159d048]: nsNativeModuleLoader::LoadModule("C:\windows\gecko\0.9.1\wine_gecko\plugins\npnul32.dll") - Symbol NSGetModule not found
0[159d048]: nsNativeModuleLoader::LoadModule("C:\windows\gecko\0.9.1\wine_gecko\nssdbm3.dll") - Symbol NSGetModule not found
0[159d048]: nsNativeModuleLoader::LoadModule("C:\windows\gecko\0.9.1\wine_gecko\softokn3.dll") - Symbol NSGetModule not found
0[159d048]: nsNativeModuleLoader::LoadModule("C:\windows\gecko\0.9.1\wine_gecko\js3250.dll") - Symbol NSGetModule not found
0[159d048]: nsNativeModuleLoader::LoadModule("C:\windows\gecko\0.9.1\wine_gecko\ssl3.dll") - Symbol NSGetModule not found
0[159d048]: nsNativeModuleLoader::LoadModule("C:\windows\gecko\0.9.1\wine_gecko\nss3.dll") - Symbol NSGetModule not found
fixmeConfusedhdocvw:ClOleCommandTarget_QueryStatus (0x148c70)->((null) 1 0x32ec90 (nil))
fixmeConfusedhdocvw:ClOleCommandTarget_Exec (0x148c70)->((null) 25 2 0x32ec98 (nil))
fixmeConfusedhdocvw:ClOleCommandTarget_Exec (0x148c70)->((null) 26 2 0x32ec98 (nil))
fixmeConfusedhdocvw:ClientSite_GetContainer (0x148c70)->(0x32ed28)
fixmeConfusedhdocvw:ClOleCommandTarget_Exec (0x148c70)->({000214d1-0000-0000-c000-000000000046} 37 0 0x32ed78 (nil))
fixmeConfusedhdocvw:ClOleCommandTarget_Exec (0x148c70)->({000214d1-0000-0000-c000-000000000046} 84 0 (nil) 0x32edf8)
fixmeConfusedhdocvw:ClOleCommandTarget_Exec (0x148c70)->((null) 29 2 0x32f994 (nil))
fixmeConfusedhdocvwBig GrinocHostUIHandler_GetDropTarget (0x148c70)
fixmeConfusedhdocvw:ClOleCommandTarget_Exec (0x148c70)->({000214d1-0000-0000-c000-000000000046} 84 0 (nil) 0x32f92c)
fixme:mshtml:nsChannel_GetSecurityInfo default action not implemented
fixme:mshtml:nsChannel_GetSecurityInfo default action not implemented
fixme:mshtml:nsChannel_GetSecurityInfo default action not implemented
fixmeConfusedhdocvw:ClOleCommandTarget_Exec (0x148c70)->({000214d1-0000-0000-c000-000000000046} 84 0 (nil) 0x32f92c)
fixme:mshtml:nsChannel_GetSecurityInfo default action not implemented
fixme:resource:GetGuiResources (0xffffffff,0): stub
fixmeConfusedhdocvw:ClOleCommandTarget_Exec (0x148c70)->({000214d1-0000-0000-c000-000000000046} 84 0 (nil) 0x32f92c)
fixme:mshtml:nsChannel_GetSecurityInfo default action not implemented
fixmeConfusedhdocvw:ClOleCommandTarget_Exec (0x148c70)->({000214d1-0000-0000-c000-000000000046} 84 0 (nil) 0x32f92c)
fixme:mshtml:nsChannel_GetSecurityInfo default action not implemented
fixmeConfusedhdocvw:ClientSite_GetContainer (0x148c70)->(0x32fb8c)
fixmeConfusedhdocvw:InPlaceFrame_SetStatusText (0x148c70)->(0xf7e186dc)
fixmeConfusedhdocvw:ClOleCommandTarget_Exec (0x148c70)->((null) 25 2 0x32fa44 (nil))
fixmeConfusedhdocvw:ClOleCommandTarget_Exec (0x148c70)->((null) 26 2 0x32fa44 (nil))
fixme:mshtml:nsURI_GetAsciiHost default action not implemented
fixmeConfusedhdocvw:ClOleCommandTarget_Exec (0x148c70)->({000214d0-0000-0000-c000-000000000046} 69 0 (nil) 0x32fc0c)
fixmeConfusedhdocvw:ClOleCommandTarget_Exec (0x148c70)->({000214d0-0000-0000-c000-000000000046} 69 0 (nil) 0x32fc0c)
fixmeConfusedhdocvw:ClOleCommandTarget_Exec (0x148c70)->((null) 26 2 0x32fc5c (nil))
fixmeConfusedhdocvw:ClOleCommandTarget_Exec (0x148c70)->((null) 29 2 0x32fc6c (nil))
fixmeConfusedhdocvw:ClOleCommandTarget_Exec (0x148c70)->({000214d1-0000-0000-c000-000000000046} 103 0 (nil) (nil))
fixmeConfusedhdocvw:ClOleCommandTarget_Exec (0x148c70)->({de4ba900-59ca-11cf-9592-444553540000} 2315 0 (nil) (nil))
fixmeConfusedhdocvw:ClOleCommandTarget_Exec (0x148c70)->((null) 35 0 (nil) (nil))
fixmeConfusedhdocvw:InPlaceFrame_SetStatusText (0x148c70)->(0x7effe387)
fixmeConfusedhdocvw:ClOleCommandTarget_Exec (0x148c70)->((null) 28 2 0x32fc14 (nil))
fixmeConfusedhdocvw:ClOleCommandTarget_Exec (0x148c70)->((null) 21 2 (nil) (nil))
fixme:font:get_nearest_charset TCI failing on 20000000
fixme:font:get_nearest_charset returning DEFAULT_CHARSET face->fs.fsCsb[0] = 20000000 file = /usr/share/fonts/truetype/ttf-gujarati-fonts/aakar-medium.ttf
fixme:font:ExtTextOutW flags ETO_NUMERICSLOCAL | ETO_NUMERICSLATIN | ETO_PDY unimplemented
fixmeConfusedhdocvw:OleObject_Close (0x148bd0)->(1)
fixme:mshtml:HlinkTarget_SetBrowseContext (0x159b8d0)->((nil))


Auf jeden Fall gibt es auch noch ein paar Zeichensatzprobleme ...


Attached Files Thumbnail(s)
   
#11
Ich habe gerade mal nach den Grundlagen in Wine geforscht und bin ein wenig fündig geworden.
Auch wenn ich (noch) nicht ganz klug daraus werde.

Die funktionsweise und Rahmenbedingungen sind ganz gut hier beschrieben:
http://wiki.jswindle.com/index.php/Wine_Re...y#Parallel_Port

QUOTE
A programmer wrote [May 2007 wine user] I have a .sys driver for parallel port communication. But it seems wine didn't support loading the driver.

D. Riekenberg: As the first step, you should try to avoid the special Driver and use the Parallelport-Driver from Windows. The default Location in the ObjectManager for the first Parallel Port is: "\Device\Parallel0".

(HKLM\Hardware\Devicemap\Parallel Ports\")

But Parallel Ports are unsupported in wine yet.... (For serial Ports, the Driver is: "dlls\ntdll\serial.c")

The programmer added: And directly accessing to parallel port is not allowed on the XP host, therefore _outp and _inp are useless.

D. Riekenberg: You need to use the Windows-API for the access: CreateFile / ReadFile / WriteFile and DeviceIOControl. [Mar 2007]

...


Der Quellcode für den Zugriff von Wine V 1.1.7 findet man hier:
http://source.winehq.org/source/dlls/wined...c?v=wine-1.1.17

Meine Frage ist nun welche Zugriffe auf die Parallel-Schnittstelle überhaupt stattfinden?
Für ein Display müssten doch eigentlich schreibende Zugriffe reichen?
Ein direkter schreibender Zugriff auf das Device /dev/lp0 ist auf jeden Fall möglich.

In der Beschreibung sind auch noch andere Möglichkeiten beschrieben einen direkten Zugriff auf den Parallelport zu ermöglichen.
Allerdings müsste ich dazu erst einmal verstehen wie der Zugriff zur Zeit bei LCDHype erfolgt so das dies Aussicht auf Erfolg hat.
Auf jeden Fall hat sich in Wine seit dem letzten Versuch 2005 mit LCDHype einges geändert.
#12
da is keine große zauberei dabei.

lcdhype -> controller dll -> dlportio.dll -> paralellport

da er nun die dlportio nicht lädt kommt auch am parport nix an. der lösungsansatz wäre jetzt eine dll zu schreiben die dlportio heisst, welche die funktion DlPortReadPortUchar() exportiert und wenn diese aufgerufen wird die daten einfach an den linux port schickt.
Current stable version of LCDHype: 0.7.6
New plugin: Notepad++ Bookmark Manager
New music: Nordwise - Empire transition
#13
Oder eine "gepatchte" Version von LCDHype 0.6 welche die Daten direkt auf LPT1 schickt.

Ich kann leider nur kein C. Nur Skriptsprachen und VB.

Werden Daten nur auf den Parport geschrieben oder auch gelesen?
Findet ein explizites ansteuern einzelner Signalleitungen statt?

Wenn nicht sollte es auf jeden Fall problemlos funktionieren.
Da andere es auch geschafft haben Dongles und ähnliches ans Laufen zu bekommen, sollte aber auch zur Not eine bidirektionale Kommunikation realisierbar sein.
#14
ich würde sagen lesend und schreibender zugriff. lesend auf jeden fall bei den lcdkeys, schreibens dann die treiber, wobei diese auch lesend drauf zugreifen könnten hier und da.

du kannst dich ja mal hinsetzen und in vb eine anwendung schreiben die auf den lpt alle pins setzt, danach könnte ich das ja in eine dll übertragen.
Current stable version of LCDHype: 0.7.6
New plugin: Notepad++ Bookmark Manager
New music: Nordwise - Empire transition
#15
Also VB unter Linux - da muss ich mich leider schütteln. wacko.gif
Programme die in VB geschrieben sind laufen auch nicht so dolle unter Wine - wie alles was zu nah an Microschrott dran ist. wink.gif

Normalerweise schreibe ich dann lieber in Perl, da müsste ich bei mir noch Activstate-Perl installieren.

Gibt es keine andere einfache Möglichkeit auszuprobieren ob man generell erst einmal zugreifen kann?

Ich kenne die Ansteuerung von diesen einfachen Text-Displays mit 2 X 16 Zeichen, da ist jedoch kein lesen von Datenwerten erforderlich.
Und auch hier gibt es meistens schon fertige Libraries für die Ansteuerung.

Für ein KS108 habe ich nur eine abstrakte Beschreibung als Datenblatt für den Controller gefunden:
http://pdf1.alldatasheet.com/datasheet-pdf...NG/KS0108B.html
#16
die sache is doch die, das du rausfinden willst wie man zugreift oder nicht? es nützen und auch keine fertigen libaries was weil wir ja nur die schnittstelle dlportio - parport abdecken wollen.

ansonsten arbeite dich doch mal rein in C, ne kleine konsolenanwendnug sollte doch mlöglich sein als test:

http://www.tutorials.de/forum/c-c/246888-l...inux-gnu-g.html
Current stable version of LCDHype: 0.7.6
New plugin: Notepad++ Bookmark Manager
New music: Nordwise - Empire transition
#17
Ja - Nein - das bringt nichts.

In dem Wiki von Wine steht ja schon drin das es gehen soll:

QUOTE
2) Quick and dirty (which will only works with parallel ports that are located at the I/O locations the IBM PC uses for parallel ports):

Create the registry key "Software\Wine\VDM\Ports" and add string entries

"read" = "0x779,0x379,0x280-0x2a0"
"write" = "0x779,0x379,0x280-0x2a0"


Warum sollte das generell nicht funktionieren?

Ich glaube Du willst erst einmal wissen ob dies funktioniert bevor Du Dir die Arbeit machst irgendetwas für Linux zu programmieren. Das ist natürlich verständlich.

Das Problem ist nun ein Windows-Testprogramm zu haben.
Unter Linux habe ich keinen Windows-Compiler - der macht dort auch wenig Sinn.
Bestimmt gibt es eine Möglichkeit für Windows zu kompilieren, aber keine Ahnung wie.

Kannst Du nicht bitte irgend so ein dummes Standard-Beispielprogramm unter Windows für mich kompilieren und ich teste dann damit?
Z.B. http://logix4u.net/Legacy_Ports/Parallel_P...nterfacing.html
Wenn das klappt, dann wird das auch mit einem eigenen Treiber funktionieren.
#18
da....


Attached Files
.zip   ParPortTest.zip (Size: 2,9 KB / Downloads: 236)
Current stable version of LCDHype: 0.7.6
New plugin: Notepad++ Bookmark Manager
New music: Nordwise - Empire transition
#19
Super.

Habe es direkt mal auf meinem Arbeitsrechner ausprobiert.

1. Versuch

QUOTE
> wine ParPortTest.exe
err:winedevice:ServiceMain driver L"IOPort" failed to load
fixme:actctx:parse_depend_manifests Could not find dependent assembly L"Microsoft.VC80.CRT"
err:module:import_dll Library MSVCR80.dll (which is needed by L"E:\\DL\\ParPortTest.exe") not found
err:module:LdrInitializeThunk Main exe initialization for L"E:\\DL\\ParPortTest.exe" failed, status c0000135


Also habe ich versucht ihm die MSVCR80.dll zu geben und diese hier heruntergeladen:
http://www.dll-files.com/dllindex/dll-fi...ml?msvcr80
Ich habe diese entpackt und in das Windows-Verzeichnis verschoben: ../drive_c/windows/system32

Dann habe ich erneut versucht das Programm zu starten.
Das Ergebnis sieht man im Screenshot.

Ich dachte zunächst die DLL muss noch registriert werden also habe ich noch
> wine regsvr32 msvcr80.dll
ausgeführt.

Hier ist jedoch die Fehlermeldung im Popup identisch, ausser das natürlich regsvr32.exe als Programm genannt wird.

Vielleicht taugt die DLL nichts.
Kannst Du die dazugehörige DLL noch bitte hinzufügen?
Oder hast Du eine andere Idee woran es liegen könnte?


Attached Files Thumbnail(s)
   
#20
zweiter versuch, ich habe die benötigten runtime funktionen mal mit in die exe reingelinkt. müsste jetzt ohne dll gehen.


Attached Files
.zip   ParPortTest.zip (Size: 25,45 KB / Downloads: 239)
Current stable version of LCDHype: 0.7.6
New plugin: Notepad++ Bookmark Manager
New music: Nordwise - Empire transition


Forum Jump:


Users browsing this thread: 2 Guest(s)