Hallo Marius,
ich habe etwas ähnliches auch schon gemacht.
Dazu musst du aber Hardware UART benutzen.
Mit einem geeigneten Quarz, kannst du die Baudrate
dann auch auf 115200 setzen.
Code:
$regfile = "m8def.dat"
$crystal = 8000000
$baud = 38400 '0,16% Fehlerrate bei 8 MHz
On Urxc Empfang 'ISR Empfangsroutine
Enable Urxc
Enable Interrupts
Dim Befehl As String * 15 , Para As String * 4 , Parameter As Integer
Dim E_byte As Byte , E_flag As Byte
Do
If E_flag = 3 Then 'Empfangsstring komplett
Parameter = Val(para) 'aus String Integer machen
Print "Befehl: " ; Befehl ; " - " ; "Parameter: " ; Parameter
Befehl = "" 'Befehl löschen
Para = "" 'Parameter löschen
E_flag = 0 'Empfang neu setzen
End If
Loop
End
Empfang:
E_byte = Udr
Select Case E_byte
Case 35 : E_flag = 1 '"#" = Befehl kommt
Case 44 : E_flag = 2 '"," = Parameter kommt
Case 13 : E_flag = 3 '"ENTER" = Empfang komplett
Case Else:If E_flag = 1 Then Befehl = Befehl + Chr(e_byte)
If E_flag = 2 Then Para = Para + Chr(e_byte)
End Select
Return
Damit kannst du den kompletten String vom PC an den Controller schicken, ohne das etwas verloren geht.
Lesezeichen