Daten via RS232 nur senden wenn Daten verändert

OP #2621127
Lesenswert?

Hi,

Habe derzeit erfolgreich folgenden Bascom Code (Auszug) am laufen:

'-----------------------------------
' Ringbuffer für RX und TX Daten.
'-----------------------------------
Config Com4 = 256000 , Synchrone = 0 , Parity = None , Stopbits = 1 , 
Databits = 8 , Clockpol = 0
Config Serialin3 = Buffered , Size = 254 , Bytematch = 13
Config Serialout3 = Buffered , Size = 254


Do
  If Flag_zt = 1 Then
    Print #4 , "zt*" ; 1h ; Tz ; 1m ; Tz ; 1s ; Tz ;
  End If

 if Flag_....
    print....
 end if
Loop

Ok, wie man sieht werden ständig Daten gesendet, obwoh sich deren inhalt 
gar nicht ändert.

Ich bin am überlegen das umzustellen. Jetzt könnte ich alles in einen 
String packen, und beim nächsten Durchlauf den neuen String mit dem 
alten vergleichen. Braucht aber ne Menge Ram und Zeit

Bin am überlegen ob ich nicht alles immer in den selben String packe, 
und davon eine Prüfsumme mache und mir nur die Prüfsumme merke, nur wenn 
diese sich unterscheidet werden Daten gesendet, dann auch gleich mit 
Prüfsumme.

Was ich nicht sende muss der PC nicht auswerten.

???
Gast #2621149
Lesenswert?

Wer ändert den die Daten? Liegt das nicht auch in deiner Kontrolle?

Dann könntest du einfach ein Flag setzen in dem moment wo dein Daten 
tatsächlich geändert werden. Das Flag brauchst du nur noch abzuprüfen in 
deiner Senderoutine.
OP #2621156
Lesenswert?

Es werden viele PORT Eingänge gelesen, die ändern sich, darauf habe ich 
keinen Einfluss. Auch von I2C Slaves. Aber da bekomme ich es mit wenn 
neue Daten kommen, da habe ich noch eine extra leitung für Interrupt 
verlegt.

Ja, was ist besser, immer wieder das selbe senden, auch wenn Daten nicht 
verändert, oder wie oben, ab in einen String und Prüfsumme erzeugen, 
merken, vergleichen?

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren