sergios Δημοσιεύτηκε Νοέμβριος 28, 2010 #1 Κοινοποίηση Δημοσιεύτηκε Νοέμβριος 28, 2010 Γεια σας παιδια.μια ερωτηση ισωσ γνωριζετε την απαντηση... Προσπαθω να στειλω μεσω σειριακης θυρας σε ASCII τα ελληνικα γραμματα.και το αποτελεσμα ειναι να μου βγαινουν κινεζικα.... στην vb.net 2010 υπαρχει μια εντολη SerialPort1.Encoding= System.Text.Encoding.Default το οποιο το διορθωνει και στελνει κανονικα τα ελληικα γραμματα. ΕΡΩΤΗΣΗ: στην VB 6.0 sp2 πως διορθονεται το προβλημα αυτο?? Link to comment Share on other sites More sharing options...
G0D Δεκέμβριος 4, 2010 #2 Κοινοποίηση Δεκέμβριος 4, 2010 Κάνε χρήση του MSCOMM control και μπορείς να στέλνεις κανονικά....με την προυπόθεση ότι η μεταβλητή σου είναι δηλωμένη string και αρχικοποιημένη γιατι η 6.0 έχει πολλά προβλήματα με τις μη δηλωμένες μεταβλητές. Συνήθως εκεί είναι το κόλπο. Link to comment Share on other sites More sharing options...
sergios Δεκέμβριος 7, 2010 Author #3 Κοινοποίηση Δεκέμβριος 7, 2010 καλιμερα ευχαριστω για το ενδιαφερον σου! αλλα δεν ειναι αυτο.Private Sub Command1_Click()Dim ser, sd As Stringser = "ΤΙΜΗ ΛΙΤΡΟΥ"sd = StrConv(ser, vbFromUnicode, 256) MSComm1.Output = Chr(27) & Chr(33) & Chr(0) & ser MSComm1.Output = Chr$(27) & Chr$(33) & Chr$(0) & sd MSComm1.Output = Chr(27) & Chr(33) & Chr(0) & "ΠΟΣΟ" MSComm1.Output = Chr(27) & "i"End Subο παραπανω κωδικας ειναι ενα απλο τεστ το οποιο επρεπε να στελνει μεσς σειριακης (ΤΙΜΗ ΛΙΤΡΟΥ,ΤΙΜΗ ΛΙΤΡΟΥ ,ΠΟΣΟ) και ομως στελνει κινεζικα!!!!το ειχα αντιμετοπισει το προβλημα αυτο παλιοτερα...αλλα δεν θυμαμαι το ID για ελληνικα...Το προβλημα ειναι οτι τα ελληνικα ανηκουν στον extended ascii table και ειναι των 8 bits... ενω το βασικο table ειναι 7 bits/ascii.θυμαμαι οτι το ειχα λυσει με την εντολη StrConv(ser, vbFromUnicode, 256) το 256 ειναι λαθος....(ID) αυτο μου κανει ολη την ζημια...αν ξερει κανενασ το σωστο ID 8α με εσωνε....στην VB.NET οταν του λες serialPort1.system.encoding=default ουσιαστικα κανει ακριβως το ιδιο πραμα με την εντολη StrConv(ser, vbFromUnicode, 256) αλλα με μια διαφορα....βρισκει το default Unicode απο τα windows απο μονο του...κατι το οποιο δεν κανει η vb6 η δεν γνωριζς την διαδικασια αυτοματης ευρεσης toy unicode των windows.. Link to comment Share on other sites More sharing options...
sergios Δεκέμβριος 7, 2010 Author #4 Κοινοποίηση Δεκέμβριος 7, 2010 ΛΟΙΠΟΝ επειδη ολο το θεμα με εχει τσαντισει.....βρικα μια αλλην απαντηση (πλαγια). Public Function StrConvToGreek(StrToConvert) As StringDim ConvertedString As StringDim AsciiConvert As IntegerConvertedString = ""StrConvToGreek = ""For i = 1 To Len(StrToConvert)AsciiConvert = Asc(Mid(StrToConvert, i, 1))If (AsciiConvert > 192) And (AsciiConvert < 211) ThenAsciiConvert = AsciiConvert - 65ElseIf (AsciiConvert > 192) And (AsciiConvert >= 211) ThenAsciiConvert = AsciiConvert - 66End IfConvertedString = ConvertedString & Chr(AsciiConvert)Next iStrConvToGreek = ConvertedStringEnd FunctionPrivate Sub Command1_Click()On Error Resume NextDim PriceLt, LT, TotV, EisP As StringPriceLt = StrConvToGreek("ΤΕΣΤ 1")LT = StrConvToGreek("ΤΕΣΤ 2")TotV = StrConvToGreek("ΑΔΦΣΗ")EisP = StrConvToGreek("ΚΞΣΓΘΞΜΛ")MSComm1.Output = Chr(27) & Chr(33) & Chr(0)MSComm1.Output = Chr(27) & Chr(33) & Chr(0) & PriceLt & " 1.234" & Chr$(&HA) & Chr$(13) MSComm1.Output = Chr(27) & Chr(33) & Chr(0) & LT & " 15.000" & Chr$(&HA) & Chr$(13) MSComm1.Output = Chr(27) & Chr(33) & Chr(16) & TotV & " 20.00" & Chr$(&HA) & Chr$(13) MSComm1.Output = Chr(27) & Chr(33) & Chr(0) & EisP & " 25.00" & Chr$(&HA) & Chr$(13) MSComm1.Output = Chr(27) & Chr(33) & Chr(16) & StrConvToGreek("ΣΞΔΗΓΔΥΝ") & "15.00" & Chr$(&HA) & Chr$(13)MSComm1.Output = Chr(27) & "i"End Sub Link to comment Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.