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
Möglich ist ja so ziemlich alles, aber es klingt kompliziert. wenn du die Case Abfrageparameter dynamisch über ne Speicherkarte einfüttern willst. Es gibt ja Lösungen eine SDkarte mit Bascom und Dos Filesystem zu bearbeiten. Allerdings braucht das recht viel Ram im atmega. Da benötigst du allermindestens einen Mega 32. (besser sogar grösser). Die Limitation liegt hier hautsächlich im kleinen SRAM. Dann besteht eine Limitation des Dos Systemes welches in dieser kleinen Ausführung dann nur eine Datei zu einer zeit geöffnet halten kann. Das beisst sich ja wieder etwas mit der Zielsetzung nicht nur die Abfrageparameter einzulesen sondern auch noch die Ergebnisse in eine weitere Datei zu schreiben. Wie gesagt, möglich ist es, aber es wird schon kompliziert. Um die Komplexität klein zu halten könnte ich mir eher vorstellen mit dem Atmel, dem Dos Filesystem und der SD Karte lediglich einen Datenlogger zu bauen, der auf der karte den Datenstrom in eine Datei zu speichern. Eine gewisse Vorfilterung und Formatierung nach festen kritierien kann der Atmel ja gleich miterledigen. Aud er SD Karte entsteht dann im einfachsten Falle eine TXT Datei in der die einzelnen Sequenzen dann durch ein Trennzeichen z.B. ";" oder <CR/LF> abgetrennt sind. Die Auswertung und Feinfilterung machst du dann auf dem PC. Dazu kannst du dir entweder eine eigene spezialisierte Software schreiben oder das ganze z.B. in Access einimportieren . Ich hoffe, dass dieser Denkansatz dein Leben leichter macht. Gruss klaus
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.