Eleu Geschrieben 24. November 2010 Teilen Geschrieben 24. November 2010 Hallo, wenn ich über die serielle Schnittstelle mit dem Mscomm Steuerelement einen String zu einem Gerät versende, sendet mir das Gerät seinen Betriebsstatus zurück. Diesen Betriebsstatus empfange ich mit nachfolgendem Quellcode: Private Sub MSComm1_OnComm() Select Case MSComm1.CommEvent Case comOverrun: MsgBox "Datenverlust!" Case comRxOver: MsgBox "Datenverlust!" Case comEvReceive: Me.Text1 = Me.Text1 + MSComm1.Input End Select End Sub Das funktioniert auch soweit. Der empfangene String wird mir im Text1 angezeigt. Merkwürdig ist aber die Darstellung im Text1. Angezeigt wird nachfolgendes: |0001|000 Ich erwarte laut Schnittstellenbeschreibung aber nachfolgendes: <STX>0000001<ETX> Ich denke mal das "|" Zeichen entspricht dem Start oder dem Stopzeichen. Aber warum werden die Ascii Zeichen nicht in der richtigen Reihenfolge im Text angezeigt ? Wenn ich mit der Freeware "Herkules" den String empfange, wird alles richtig angezeigt. Hat jemand eine Idee, was ich in VB6 an dem MScomm oder an den Text1 einstellen muss, damit der empfangene String richtig angezeigt wird ? Gruß Eleu Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Eleu Geschrieben 25. November 2010 Autor Teilen Geschrieben 25. November 2010 Hallo, ich habe ein kleines Erfolgserlebnis. Mit dem Anwendungsstart übergebe ich dem mscomm1.ocx nachfolgende Parameter: MSComm1.CommPort = 1 MSComm1.Settings = "9600,N,8,1" MSComm1.PortOpen = True MSComm1.RThreshold = 1 MSComm1.SThreshold = 1 MSComm1.InputLen = 0 Wenn ich jetzt die Eigenschaft "MSComm1.InputLen" von "0" auf "1" ändere wird mir im Text1 nachfolgendes angezeigt: |1000000| Wenn ich es in der App. in Hex Zahlen umwandele ergibt das nachfolgende Zahlen: 3 31 30 30 30 30 30 30 2 Es wird jetzt im Text 1 also genau fasch herum angezeigt :confused: Zuerst wird das ETX und zum Schluss STX angezeigt. Wie bekomme ich meinen Text dazu, dass er nachfolgendes anzeigt: |0000001| Das entspricht in HEX: 2 30 30 30 30 30 30 31 3 Also wenn ich das Textfeld auf den Kopf stellen würde, würde es passen Welche Eigenschaft am MScomm1 muss ich wie ändern, damit es korrekt angezeigt wird. Gruß Eleu Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Reinhold Geschrieben 25. November 2010 Teilen Geschrieben 25. November 2010 Moin, Also wenn ich das Textfeld auf den Kopf stellen würde, würde es passen wer oder was hindert dich denn daran, den String auf den Kopf zu stellen, wenn es dann passt? function AufDenKopfGestellt (Textaufdenfüssen as string) as string dim i as long AufDenKopfGestellt = "" for i = len(Textaufdenfüssen) to 1 step -1 AufDenKopfGestellt = AufDenKopfGestellt & mid(Textaufdenfüssen, i, 1) next i end function Me.Text1 = AufDenKopfGestellt (Me.Text1) wie immer und aus Prinzip ungetestet und ohne Gewährleistung. Reinhold Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Eleu Geschrieben 26. November 2010 Autor Teilen Geschrieben 26. November 2010 Danke Reinhold für den Code. Das werde ich dann auch wohl so machen, wenn es keine andere Lösung gibt. Ich glaube mittlerweile, dass das MCcomm korrekt arbeitet. Andere ich die Eigenschaft "MSComm1.InputLen" auf 0 zurück, werden mir die empfangenen Daten vom Gerät, insofern sie kein Start und Stop Zeichen beinhalten, korrekt im Text 1 angezeigt. Sobald das Gerät aber Daten sendet, die Steuerzeichen enthalten, bekomme ich Murks im Text 1 angezeigt. Mittlerweile vermute ich, dass das MScomm die Daten korrekt empfängt, aber der Text 1 es einfach nicht korrekt darstellen kann. Ich bin da nicht so firm, aber muss ich vielleicht die empfangenen Daten von Unicode String zu ASCII String konvertieren, bevor ich sie im Text 1 anzeige ???? Und wenn ja, wie macht man das ? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Klotzkopp Geschrieben 26. November 2010 Teilen Geschrieben 26. November 2010 Mittlerweile vermute ich, dass das MScomm die Daten korrekt empfängt, aber der Text 1 es einfach nicht korrekt darstellen kann.Das denke ich auch. Was du empfängst, ist schlicht und einfach kein Text, es sind Binärdaten. Wenn du das als Text anzeigen willst, musst du diese Steuerzeichen entfernen oder durch einen Text ersetzen. Ich bin da nicht so firm, aber muss ich vielleicht die empfangenen Daten von Unicode String zu ASCII String konvertieren, bevor ich sie im Text 1 anzeige ????Nein. Die empfangenen Daten sind ja offensichtlich nicht als Unicode codiert. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Eleu Geschrieben 26. November 2010 Autor Teilen Geschrieben 26. November 2010 Hallo Klotzkopp, Danke für die Info. Die Lösung ist so einfach....:upps Man muss am Text 1 lediglich die Eigenschaft "Font" auf "Arial Unicode MS" einstellen, dann wird alles korrekt angezeigt. Dank an Euch allen. Gruß Eleu Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.