Chinesische Schriftzeichen von der Com ? (erledigt)

Windowsspezifisches Forum , API ,..
Beiträge, die plattformübergreifend sind, gehören ins 'Allgemein'-Forum.
Benutzeravatar
tft
Beiträge: 605
Registriert: 08.09.2004 20:18
Computerausstattung: GTX Titan , i9 9900K , 32 GB Ram , 500 GB SSD , 3 ASUS FullHD Monitore and more
Wohnort: Dachsen
Kontaktdaten:

Chinesische Schriftzeichen von der Com ? (erledigt)

Beitrag von tft »

Hallo,
im zuge meines Arduino Projectes habe ich von PureBasic 5.43 auf 5.60 gewechselt. Nun bekomme ich anstatt ASCII , Chinesische Schriftzeichen auf der PC Seite. Da es unter 5.43 einwandfrei funktioniert gehe ich davon aus das sich etwas geändert hat. Einer eine Idee was ?.

Dieser Teil öffnet den Com Port und sendet einen Befehl an den Arduino "..", Der soll dann Text zurück senden.

Code: Alles auswählen

       Case Connect
          
          If PortOpen=1
            CloseSerialPort(0)
          EndIf
          
          If OpenSerialPort(0, PortName.s, Verbindung.l, #PB_SerialPort_NoParity, 8, 1, #PB_SerialPort_NoHandshake, 1024, 1024)
            
            AddGadgetItem(Console, -1, "Open Port "+PortName.s+" connect with "+Str(Verbindung.l)+" speed" )
            PortOpen=1
            WriteSerialPortString(0,".."+Chr(13)+Chr(10),#PB_Ascii   )
            
          Else
            
            AddGadgetItem(Console, -1, "Cant open port "+PortName.s )
            
          EndIf
Und dieser teil verursacht ein Timer Error weil er nicht das richtige End Zeichen bekommt. Das kann auch nicht funktionieren weil
es im String der von der Com Schnitstelle kommt kein entsprechendes Zeichen am ende gibt. Ich vermute das liegt an irgendwelchern Einstellungen

Das ist der DebugLog Auszug

ARDUINO
StringAnalyse
求敵潔瑯⁨瑓瑡獵㴠〠਍求敵潔瑯⁨敖扲湩畤杮眠物⁤畡杦扥畡൴漊瑯⁨怠⸮⁠畦牥䴠摯汵䤠杦扥畡൴漊瑯⁨普൯ 畦牥
53
6C 65 6F 74 20 74 74 73 3D 30 A0 6C 65 6F 74 20 65 62 6E 75 67 77 72 20 75 67 62 75
D7 6F 74 20 60 2E 20 75 72 4D 64 6C 49 67 62 75 D7 6F 74 20 66 D6 20 75 72

Code: Alles auswählen

 
If PortOpen=1 ; ist ein Port offen, bei ARDUINO meistens der COM3
    
    Input.l = AvailableSerialPortInput(0)
    
    If Input.l<>0 ; liegen daten am ComPort an
      ;Delay(100)
      Debug("ARDUINO")
      t$=""
      timer1 = ElapsedMilliseconds()+1000
      While Asc(Right(t$,1)) <> 10 ; das ende eines Strings ist mit einem Chr(10) markiert. (Linefeed)
        
        If timer1<ElapsedMilliseconds()
          MessageRequester("Error","Serial timer overload",#PB_MessageRequester_Ok )  
          StringAnalyse(t$)
          Quit = 1
          Break 
          t$=""
        EndIf
        
        Input.l = AvailableSerialPortInput(0)
        While Input.l <>0 ; alle daten lesen
          
          If input.l<=1024
            ReadSerialPortData(0, *MemoryID, Input.l)
            ; Da hir auch mer als 1 String drin sein kann. Muss das zerlegt werden
            t$=t$+PeekS(*MemoryID,Input.l)
            
          Else
            MessageRequester("Error","SerialPortInput > Memory Puffer",#PB_MessageRequester_Ok )  
            Quit = 1
            Break 2
            t$=""
          EndIf
          
          Input.l = AvailableSerialPortInput(0)
          
        Wend
        
      Wend
      
      ;StringAnalyse(t$)
      If QUit = 0
        If t$<>"" ; wurde ein String oder mehr vom ComPort geholt
          
          firstAscii=1
          For i = 1 To Len(t$)
            If Asc(Mid(t$,i,1)) = 13
              lastAscii = i
              t1$ = Mid(t$,firstAscii,lastAscii-firstAscii)
              AddGadgetItem(Console, -1, t1$ ); und in die GetGat liste eingetragen
              SendMessage_(GadgetID(Console),#EM_SCROLL,#SB_BOTTOM,0) ;                  !! Sorg dafür das das Editor Gadget automatisch nach unten Scrollt !!
              Comandos(t1$)
              firstAscii = lastAscii +2
            EndIf
            
            
          Next
           
        EndIf
      EndIf
      
    EndIf
    
  EndIf
wäre cool wenn mir jemand das erklären könnte.

Gruss TFT
Zuletzt geändert von tft am 21.04.2017 11:27, insgesamt 1-mal geändert.
TFT seid 1989 , Turgut Frank Temucin , Dachsen/Berlin/Antalya
Aktuelles Projekte : Driving School Evergarden
YouTube : Pure Basic to go
FaceBook : Temuçin SourceMAgic Games
DISCORD : SourceMagic
W10 , i9 9900K ,32 GB Ram , GTX Titan , 3 Monitore FHD
ARDUINO Freak :-)
H.Brill
Beiträge: 356
Registriert: 15.10.2004 17:42
Wohnort: 66557 Neunkirchen

Re: Chinesische Schriftzeichen von der Com ?

Beitrag von H.Brill »

Das, mit den Schriftzeichen liegt daran, daß PB auf Unicode umgestellt wurde.
Benutze bei PeekS auch den 3.Paramater (#PB_Ascii).
PB 5.60
Benutzeravatar
juergenkulow
Beiträge: 188
Registriert: 22.12.2016 12:49
Wohnort: :D_üsseldorf-Wersten

Re: Chinesische Schriftzeichen von der Com ?

Beitrag von juergenkulow »

Was passiert wenn bei WriteSerialPortString der Format-Parameter #PB_Unicode ist?

Code: Alles auswählen

 WriteSerialPortString(0,".."+Chr(13)+Chr(10),#PB_Unicode   )

Code: Alles auswählen

Debug PeekS(@"求敵潔瑯⁨瑓瑡獵㴠〠਍求敵潔瑯⁨敖扲湩畤杮眠物⁤畡杦扥畡൴漊瑯⁨怠⸮⁠畦牥䴠摯汵䤠杦扥畡൴漊瑯⁨普൯ 畦牥",-1,#PB_Ascii)
; BlueTooth Status = 0
; BlueTooth Verbindung wird aufgebaut
; ooth  `..` fuer Modul Ifgebaut
; ooth nfo
;  fuer
s$=".."+Chr(13)+Chr(10) 
; Pbcompiler datei.pb /COMMENTED erzeugt folgenden 16 bittigen String: _S1: dw 46,46,13,10,0
; Dies entspricht: 0000000001C10850  2E 00 2E 00 0D 00 0A 00 00 00                    ..........
ShowMemoryViewer(@s$,10)
Benutzeravatar
tft
Beiträge: 605
Registriert: 08.09.2004 20:18
Computerausstattung: GTX Titan , i9 9900K , 32 GB Ram , 500 GB SSD , 3 ASUS FullHD Monitore and more
Wohnort: Dachsen
Kontaktdaten:

Re: Chinesische Schriftzeichen von der Com ?

Beitrag von tft »

Hallo,

ok ... das war es . Ich muss ASCII angeben, Das brauchte man vorher nicht.

Danke , Gruss TFT
TFT seid 1989 , Turgut Frank Temucin , Dachsen/Berlin/Antalya
Aktuelles Projekte : Driving School Evergarden
YouTube : Pure Basic to go
FaceBook : Temuçin SourceMAgic Games
DISCORD : SourceMagic
W10 , i9 9900K ,32 GB Ram , GTX Titan , 3 Monitore FHD
ARDUINO Freak :-)
H.Brill
Beiträge: 356
Registriert: 15.10.2004 17:42
Wohnort: 66557 Neunkirchen

Re: Chinesische Schriftzeichen von der Com ?

Beitrag von H.Brill »

juergenkulow hat geschrieben:Was passiert wenn bei WriteSerialPortString der Format-Parameter #PB_Unicode ist?
Dein Microcontroller bzw. Gerät erkennt den String nicht, wenn es
kein Unicode beherrscht.

Anders sieht das bei (Android) Smartphones usw. aus. Die beherrschen
von Haus aus Unicode.
PB 5.60
Antworten