Hallo,
mein Problem ist, dass ein vorhandenes kurzes JAVA-Script in BASCOM
umgesetzt werden soll.
Zur Erläuterung: Um auf der Empfangsseite ggf. entstandene
Übertragungungsfehler feststellen zu können, werden via Funk übertragene
ASCII-Strings mit einer Prüfsumme ( CRC ) ergänzt. Dazu ist ein
Vergleich der Stringinhalte mit der Prüfsumme vorzunehmen. Nachdem eine
dazu geeignete Routine nur in JAVA vorhanden ist, ich das Ganze aber in
BASCOM-AVR realisieren möchte, suche ich nach einem freundlichen
Menschen, der mich mangels JAVA-Kenntnissen bei der Umsetzung
unterstützen kann.
Ein zu bearbeitender Musterstring sieht beispielsweise folgendermassen
aus:
$$CRCCE3E,AE5PL-T>API282,DSTAR*:!3302.39N/09644.66W>/ <CR><LF>
Dabei ist "$$CRC" ein feststehender Header und "CE3E" die errechnete
Prüfsumme in hexadezimalem Format.
Der zur Prüfsummenberechnung herangezogene Stringinhalt beginnt hinter
dem folgenden Komma und schliesst die am Ende eingefügten Zeichen <CR> (
ASCII-Char.13 ) und <LF> ( ASCII-Char.10 ) mit ein.
Hier nun die an anderer Stelle zur Prüfsummenberechnung benutzte
JAVA-Routine:
The CRC calculation is (Java):
'-----------------------------------------------------------------------
--
public final static int calcCCITTCRC(byte[] buffer, int startpos, int
length)
{
int icomcrc = 0xffff;
for (int j = startpos; j < startpos+length; j++)
{
int ch = buffer[j] & 0xff;
for (int i = 0; i < 8; i++)
{
boolean xorflag = (((icomcrc ^ ch) & 0x01) == 0x01);
icomcrc >>>= 1;
if (xorflag)
icomcrc ^= 0x8408;
ch >>>= 1;
}
} return (~icomcrc) & 0xffff;
}
'-----------------------------------------------------------------------
--
Wenn ich es richtig verstehe, dann trägt der zu verarbeitende
Eingangsstring dabei den Namen: "icomcrc".
Über eine Unterstützung bei der Lösung meines Problems würde ich mich
sehr freuen.
Klaus
>Wenn ich es richtig verstehe, dann trägt der zu verarbeitende >Eingangsstring dabei den Namen: "icomcrc". icomcrc ist ein internes Zwischenerebnis zu Berechnung der CRC. "byte[] buffer" ist der Eingangsdatensatz, "int startpos, int length" geben an, ab wo und für wieviele Bytes innerhalb des Eingangsdatensatzes die CRC berechnet werden soll. Eine Erklärung der java-Operatoren gibt es z.B. hier: http://www.programmersbase.net/Content/Java/Content/Tutorial/Java/Operator.htm Oliver
>Wenn ich es richtig verstehe, dann trägt der zu verarbeitende >Eingangsstring dabei den Namen: "icomcrc". icomcrc ist ein internes Zwischenergebnis zu Berechnung der CRC. "byte[] buffer" ist der Eingangsdatensatz, "int startpos, int length" geben an, ab wo und für wieviele Bytes innerhalb des Eingangsdatensatzes die CRC berechnet werden soll. Eine Erklärung der java-Operatoren gibt es z.B. hier: http://www.programmersbase.net/Content/Java/Content/Tutorial/Java/Operator.htm Oliver
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.