Nö. inputbin gibt 1:1 das abgesendete Zeichen
Nö. inputbin gibt 1:1 das abgesendete Zeichen
mfg robert
Wer glaubt zu wissen, muß wissen, er glaubt.
Also stimmt der vergleich so:
stimmt das so?
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
mfg robert
Wer glaubt zu wissen, muß wissen, er glaubt.
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
mfg robert
Wer glaubt zu wissen, muß wissen, er glaubt.
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.
mfg robert
Wer glaubt zu wissen, muß wissen, er glaubt.
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
mfg robert
Wer glaubt zu wissen, muß wissen, er glaubt.
Lesezeichen