Hallo junger Hirsch!
Ich habe für eine Frässteuerung folgendes gemacht:
Pakt ist sowas wie ein Zeiger auf die aktuelle Position und Pend enthält den Index der letzten Position (die ja immer eine andere sein kann).Code:'Fehlercodes Const Error = 0 Const Ok = 1 Const Overflow = 2 'einen Ringspeicher definieren Const Arraymax = 30 Dim Cmd(arraymax) As Byte Dim Pakt As Byte , Pend As Byte, I As Byte 'den Ringspeicher initialisieren Pend = 1 Pakt = 1
Beim Hinzufügen von Daten schreibe ich folgendes:
Ich sende also jedesmal eine Bestätigung, ob ein Kommando abgelegt werden konnte oder nicht. Wenn ich kein weiteres Kommando ablegen kann, weil der Ringspeicher voll ist, versuche ich solange zu senden, bis das Senden mit Ok bestätigt wird, also eigentlich ganz einfach.Code:I = Pend + 1 If I > Arraymax Then I = 1 If I = Pakt Then Printbin Overflow ; 'Fehlercode senden (Überlauf des Stacks) Else 'kein Überlauf Pend = I 'letzter Satz ist i Cmd(pend) = Udr_byte(1) 'Das Kommando übergeben Printbin Ok ; End If
Wichtig ist noch, dass beim Abarbeiten eines Kommandos der Zeiger Pakt erhöht wird, also:
Code:Incr Pakt 'Zeiger auf aktuellen Satz erhöhen If Pakt > Arraymax Then Pakt = 1 'wenn Überlauf, dann erneut beginnen
Kannst Du damit was anfangen?
Ich gebe zu, PicNicks Lösung ist schöner...
Ruppi







Zitieren
Lesezeichen