ok, werd ich mal austesten, aber ist es prinzipiell so richtig im meinem program, oder muss ich die zu vergleichende zahl irgendwie in ein byte umwandeln?
danke
xeus
Druckbare Version
ok, werd ich mal austesten, aber ist es prinzipiell so richtig im meinem program, oder muss ich die zu vergleichende zahl irgendwie in ein byte umwandeln?
danke
xeus
Nö. inputbin gibt 1:1 das abgesendete Zeichen
Also stimmt der vergleich so:
stimmt das so?Zitat:
Sub Status
If Packete(2) = 006 Then 'Vergleich ob das 2.empfangsbyte = 6
Line3 = "kein Fehler"
Print "kein fehler"
Else
Line3 = " Fehler"
Print "fehler"
End If
return
end sub
ich hab ets mal nach
inputbin Packete(1),8
folgendes geschrieben:
printbin packete(1);8
kommt alles etwas durcheinander an, stimmt das so?
Das stimmt schon so, auch die Reihenfolge. alles ok.
Irgendwie nach dem inputbin kontrollieren, dann fällt es dir wie Schuppen aus den Haaren
also hab deinen vorschlag mal so eingefügt, und getestet.
mir ist aufgefallen, das er die reihenfolge irgendwie durcheinander haut.
weisst du was ich dagegen machen kann?
Er haut sie eben nicht "irgendwie" durcheinander, das hat sicher Methode.
schreib dir untereinander
SENT..Byte1, Byte2,...., Byte8 (soll)
RECV..Byte1, Byte2,...., Byte8 (ist)
Irgendwas ist zuviel oder zuwenig
wie meinst du das?
mir ist aufgefallen, das er immer die 3 letzten bytes vorne anhängt:
z.b.
6
7
8
1
2
3
4
5
was kann ich da machen?
Könnte sein, daß dein PC-Programm früher zu senden beginnt, als der Controller bereit ist.
Laß' den BasCom buffern
Schreib vorne irgendwo
CONFIG SERIALIN = buffered, SIZE = 24
Dann ist er immer empfangsbereit.
juihu, ich habs geschaft, wenn jetzt das 2.byte 6 ist schreibt er mir 'kein fehler'
danke, danke, danke.
kannst du mir vielleicht helfen, das problem mit der checksumme zu lösen?
Puh, ich hab das einfach nur abgeschrieben bzw. angepaßt
Wenn du mehrere Byte checkst, mußt du zuerst A) initialisieren,Code:'Checksumme berechnen
Clc: 'Init
'A. Init BccLo=0xFF, BccHi=0xFF
Bcclo = &HFF 'setze high
Bcchi = &HFF 'setze high
'B Für jedes Byte das gesendet und empfangen wird
New = &B11011001 'lade byte
New = New Xor Bcclo 'new=new XOR BccLo
Tmp = New
Shift Tmp , Left , 4 'Tmp = New << 4
New = Tmp Xor New 'New = Tmp Xor New
Tmp = New
Shift Tmp , Right , 5 'Tmp = New >> 5
Bcclo = Bcchi 'Bcclo = Bcchi
Bcchi = New Xor Tmp 'Bcchi = New Xor Tmp
Tmp = New
Shift Tmp , Left , 3 'Tmp = New << 3
Bcclo = Bcclo Xor Tmp 'Bcclo = Bcclo Xor Tmp
Tmp = New
Shift Tmp , Right , 4 'Tmp = New >> 4
Bcclo = Bcclo Xor Tmp 'Bcclo = Bcclo Xor Tmp
'C. Negieren Bit by Bit BccLo & BccHi: CLC_L=~BccLo CLC_H=~BccHi
Clc_l = Bcclo Xor &HFF
Clc_h = Bcchi Xor &HFF
dann für jedes Byte einmal B)
und am Schluß einmal C)
wenn ich das richtig verstehe