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.