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
EndIf
Gruss TFT