Forum: Mikrocontroller und Digitale Elektronik Hilfe gesucht: JAVA zu BASCOM


von Klaus H. (gpsklaus)


Lesenswert?

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

von Oliver (Gast)


Lesenswert?

>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

von Oliver (Gast)


Lesenswert?

>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
Noch kein Account? Hier anmelden.