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
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
    
  EndIfGruss TFT



