MyPhoneExplorer und Linux/Wine
Hehe... das gleiche Ergebnis hatte ich auch.weinbi hat geschrieben:BTW: Wenn man bei Google "wine" und "MSComm" eintippt, ist der erste Treffer dein Forum mit diesem Thread hier!
Zum Thema Wine und MSComm habe ich allerdinx hauptsächlich was zum Thema Wein gefunden.... Habe da wohl noch nicht genau genug gesucht. *g* Ich wollte aber auch nochmal die Consolenausgabe genau untersuchen.
Nur mal so am Rande: Wenn ich mich recht erinnere ist die VB.NET 2005 Express Edition für private, nicht kommerzielle Zwecke kostenlos. Ich habe mir vor Ewigkeiten auch die Express Edition runtergeladen und die ist IMHO einiges besser als VB6 da vieles einfacher umzusetzen ist (z.B. Multithreading ist über das Backgroundworker-Objekt nur eine Sache von ein paar Klicks - genauso einfach wie nen Timer!)FJ hat geschrieben:Das mit .NET können wir vergessen - kann ich ibn VB6 nicht nutzen.
Solltest Du mal langeweile haben, kannste Dir das ja mal anschauen und einfach mal versuchen was passiert wenn Du das VB6-Projekt dort importierst bzw. mal mit dem System.IO ein wenig rumspielen.
Ich werde mir dann jetzt mal weiter die Consolenausgaben anschauen...
Konsolenausgabe beim Verbindungsaufbau mit MSComm:
Konsolenausgabe beim Verbindungsaufbaue über die stabile Verbindung:
Das Problem scheint bei der Klasse/Methode GetCommProperties oder der darauf folgenden Routine zu liegen. Entweder funktioniert die nicht im Wine oder sie liefert nicht das zurück was sie eigentlich sollte, was somit einen Fehler in Deinem Programm verursacht. Das Teil befindet sich in der Kernel32.dll.
Nachtrag: Ich habe noch ein wenig gegoogelt und bin mehrfach auf ähnliche Fehler bei anderen Programmen gestossen und die Meldung fixme:comm:GetCommProperties (0x154 0x33cb70 ) deutet tatsächlich auf einen Bug in Wine hin.
@FJ: Hast Du vielleicht eine Möglichkeit diesen Fehler zu umgehen bzw. den Quellcode ein wenig zu modifizieren? Ich weiß ja nicht wofür die GetCommProperties genau zuständig ist. Aus den bei Google gefundenen Erklärungen bin ich nur bedingt schlau geworden...
Code: Alles auswählen
err:statusbar:StatusWindowProc unknown msg 2210 wp=0001 lp=000402a8
err:progress:ProgressWindowProc unknown msg 2210 wp=0001 lp=000402a6
fixme:comm:set_queue_size insize 8192 outsize 8192 unimplemented stub
fixme:comm:GetCommProperties (0x154 0x33cb70 )
Konsolenausgabe beim Verbindungsaufbaue über die stabile Verbindung:
Code: Alles auswählen
err:statusbar:StatusWindowProc unknown msg 2210 wp=0001 lp=000203b6
err:progress:ProgressWindowProc unknown msg 2210 wp=0001 lp=000203b8
fixme:comm:set_queue_size insize 8192 outsize 8192 unimplemented stub
err:progress:ProgressWindowProc unknown msg 2210 wp=0001 lp=000203b4
err:statusbar:StatusWindowProc unknown msg 2210 wp=0001 lp=000203b2
err:header:HEADER_WindowProc unknown msg 2210 wp=0001 lp=000203ae
Nachtrag: Ich habe noch ein wenig gegoogelt und bin mehrfach auf ähnliche Fehler bei anderen Programmen gestossen und die Meldung fixme:comm:GetCommProperties (0x154 0x33cb70 ) deutet tatsächlich auf einen Bug in Wine hin.
@FJ: Hast Du vielleicht eine Möglichkeit diesen Fehler zu umgehen bzw. den Quellcode ein wenig zu modifizieren? Ich weiß ja nicht wofür die GetCommProperties genau zuständig ist. Aus den bei Google gefundenen Erklärungen bin ich nur bedingt schlau geworden...
Also das GetCommProperties scheint tatsächlich noch nicht richtig implementiert zu sein, denn der Bug ist auf der offiziellen Bug-Mailing-List von wine. Seit 2005! 
http://www.winehq.org/pipermail/wine-bu ... 14596.html
Soweit ich rausgefunden habe, liefert es u.a. Informationen über die Verbindung bzw. den Verbindungstreiber (Baudrate, Schnittstelle / Protokoll, usw.).
Hoffe dass ich da richtig liege...
http://www.winehq.org/pipermail/wine-bu ... 14596.html
Soweit ich rausgefunden habe, liefert es u.a. Informationen über die Verbindung bzw. den Verbindungstreiber (Baudrate, Schnittstelle / Protokoll, usw.).
Hoffe dass ich da richtig liege...
Das Problem ist das der eine Bug gefixed ist um das dort erwähnte Programm zur Funktion zu überreden. Aber in der Regel beinhaltet eine Klasse oder Methode mehr als nur eine Zeile Code, soll also heissen das es natürlich noch mehr Möglichkeiten für Bugs gibt. Und wenn man noch ein wenig die Suchmaschinen bemüht findet man auch noch eine ganze Menge zum Thema. Manche sind gravierend, manche wiederum unwichtig, manche sind fixed, andere wiederum nicht. Man kann also nicht pauschal sagen das die GetCommProperties nun fehlerfrei sind oder nicht nur weil ein Programm läuft und ein anderes nicht. Verstehst Du wie ich das meine?
Bei Wine habe ich immer die neueste im Einsatz, also zur Zeit müsste das die 0.9.41 sein, als OS läuft Ubuntu 7.04.
Bei Wine habe ich immer die neueste im Einsatz, also zur Zeit müsste das die 0.9.41 sein, als OS läuft Ubuntu 7.04.
MyPhoneExplorer ruft nicht direkt GetCommProperties auf, diese API-Funktion wird von MSComm automatisch aufgerufen. Ich denke es wäre zielführender wenn wir uns nach einer anderen ActiveX-Bibliothek umschauen.
Hast du eine ungefähre Ahnung wie lange es dauern wird ca. 55.000 Zeilen Code zu portieren ?Wenn ich mich recht erinnere ist die VB.NET 2005 Express Edition für private, nicht kommerzielle Zwecke kostenlos.
Lass mich raten: Mehr als 5min.???FJ hat geschrieben:Hast du eine ungefähre Ahnung wie lange es dauern wird ca. 55.000 Zeilen Code zu portieren ?
Ich denke eine komplette Portierung wäre natürlich sehr aufwändig. Die Frage wäre was VB.NET zu Deinem Quellcode sagt. Denke aber das das a) nicht so ohne weiteres funktionieren würde und b) für nen Test viel zu aufwändig wäre...
sag ich ja...
Ne andere Frage: Ist es denn sehr aufwändig MSComm und die "Standard-Verbindung" parallel laufen zu lassen? Ich denke den meisten Linux-Usern ist erstmal damit geholfen das sie ihr Handy verwalten können etc. "Bonus-Features" wie ein automatisches benachrichtigen bei neuen SMS etc. sind z.B. für mich unwichtig.
Ansich funktioniert Deine Soft bzw. die wichtigen Funktionen ja scheinbar einwandfrei.
Ne andere Frage: Ist es denn sehr aufwändig MSComm und die "Standard-Verbindung" parallel laufen zu lassen? Ich denke den meisten Linux-Usern ist erstmal damit geholfen das sie ihr Handy verwalten können etc. "Bonus-Features" wie ein automatisches benachrichtigen bei neuen SMS etc. sind z.B. für mich unwichtig.
Ansich funktioniert Deine Soft bzw. die wichtigen Funktionen ja scheinbar einwandfrei.
-
Winer
@weinbi
das war ich, habe ganz vergessen meinen Namen einzutragen.Anonymous hat geschrieben:hmm, ich denke im zweifelsfall liegt es eher an der wine-version als an der distribution.
zusammenfassung für die installation:
1. vb 6 steuerelemente installieren
2. oleaut32.dll besorgen, in den system32 ordner von wine kopieren und in winecfg die überschreibung (native, windows) aktivieren!
3. stdole2.tlb runterladen, in system32 kopieren, folgenden Code eingeben:4. alle DLLs aus der ZIP-Datei von MPE per Hand in wine registrieren:Code: Alles auswählen
wine regsvr32 oleaut32.dll____________________________________Code: Alles auswählen
wine regsvr32 dll.dll
Verbindung über Datenkabel kommt nicht zustande
habe COM1 mit folgendem Code für wine registriert:
Code: Alles auswählen
~$ .wine/dosdevices$ ln -s /dev/ttyACM0 com1
MPE sagt schon wenn ich auf Datei -> Einstellungen gehe: Systemerror: 0 [Success]
kann dann aber Einstellungen vornehmen. (also COM1 eingetragen z.B.)
wenn ich dann auf Verbinden gehe, kann er COM1 öffnen, geht ungefähr bis zur Hälfte des Ladebalkens, bleibt bei "Identifizierung..." stehen und sagt "Handy konnte nicht identifiziert werden"
nachdem ich "sichere Verbindung" aktiviert habe hat auch bei mir die Verbindung einwandfrei geklappt! Ich benutze übrigens das mitgelieferte USB-Kabel!
mittels folgendem Code ging es einwandfrei:
Code: Alles auswählen
:~/$ cd ~/.wine/dosdrive/
:~/.wine/dosdevices$ ln -s /dev/ttyACM0 com1weinbi, könntest du noch die USB-Verbindung in dein Howto einfügen?
_________________________________
Distribution: Ubuntu Edgy Eft (6.10)
Wine-Version: 0.9.22
@Winer
Klar kann ich das!
Hättest aber auch einfach einen "Post Reply" machen können!
Ach ja, wegen deiner Bemerkung
Da fragt er dann nämlich nach ob er die Datei ersetzen soll.
@FJ
Wohin portierst du es denn, wenn man fragen darf? In .NET oder wohin?
Rein aus Interesse...
Klar kann ich das!
Hättest aber auch einfach einen "Post Reply" machen können!
Ach ja, wegen deiner Bemerkung
Deswegen verwende ich auch den Befehl(darauf achten ob schon com1 in dosdevices angelegt ist, wenn ja, löschen oder anderen com-port wählen)
Code: Alles auswählen
ln -is@FJ
Wohin portierst du es denn, wenn man fragen darf? In .NET oder wohin?
Rein aus Interesse...