Hallo zusammen,
habe ein Programm in Bascom erstellt, welches die seriellen Ausgaben
eines Gerätes einliest, nach meinem Geschmack umformatiert (Die Ausgabe
vom Gerät kann nicht geändert werden) und noch einige Informationen
hinzufügt.
Läuft einwandfrei. UART Parameter: 9600,8,N,1.
In der Select Case RX stehen jetz schon ca. 300 Parameter und es kommen
immer wieder welche dazu. Das heißt, bei jeder Änderung neu comilieren
und den Atmega neu programmieren. Gibt es dazu eine Alternative ?
Vielleicht Speicherkarte oder Eprom/EEprom, mit einer Art Datenbank
drauf ?
Wenn z.B. Speicherkarte, dann müsste man ja auch (sofern groß genug) die
Ausgaben darauf speichern können.
Zweite Frage:
Jede Ausgabe des Ausgangsgerätes wird 4x wiederholt. Hatte schon
versucht, das ganze zu puffern, vergleichen und zu filtern. Allerdings
war das Ergebnis nicht so gut wie bei der jetzigen Einlesevariante. Hat
jemand eine Idee, wie es besser zu machen wäre ? Inputbin geht nicht,
wegen der Stringmanipulationen.
Der Code:
$regfile = "M16def.dat"
$crystal = 14745600
$baud = 9600
$hwstack = 100
$swstack = 100
$framesize = 100
Dim Msg As String * 254
Dim J As String * 4
Dim M As String * 2
Dim T As String * 2
Dim Z As String * 8
Dim W As String * 3
Dim R As String * 7
Dim S As String * 1
Dim Tl As Byte , Tx As Byte , Sl As Byte , X As Byte
Dim Rx As Long
Dim Rt As String * 32
Echo Off
Do
Input Msg
Tl = Len(msg)
Tx = Tl - 34
Dim Txt As String * Tx
J = Left(msg , 4)
M = Mid(msg , 6 , 2)
T = Mid(msg , 9 , 2)
Z = Mid(msg , 12 , 8)
W = Mid(msg , 21 , 3)
R = Mid(msg , 25 , 7)
S = Mid(msg , 33 , 1)
Txt = Mid(msg , 35 , Tx)
Rx = Val(r)
Select Case W
Case "Mon" : W = "Mo."
Case "Tue" : W = "Di."
Case "Wed" : W = "Mi."
Case "Thu" : W = "Do."
Case "Fri" : W = "Fr."
Case "Sat" : W = "Sa."
Case "Sun" : W = "So."
End Select
Select Case Rx
Case 123456 : Rt = "Text 1 "
Case 234567 : Rt = "Text 2 "
Case 345678 : Rt = "Text 3 "
Case 456789 : Rt = "usw..."
Case 567890 : Rt =
Case xxxxxx : Rt =
Case yyyyyy : Rt =
Case zzzzzz : Rt =
Case else : Rt="no Data"
End Select
Print W ; " " ; T ; "." ; M ; "." ; J ; " " ; Z ; " " ; R ; " " ; S
Print Rt
Print Txt ; Chr(13) ; Chr(10)
Loop
End