www.mikrocontroller.net

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


Autor: Klaus H. (gpsklaus)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Oliver (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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/Conten...

Oliver

Autor: Oliver (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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/Conten...

Oliver

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.