2009-04-09 2 views
2

Я читаю файл из serialport с использованием протокола x-modem и 133-байтового пакета. Я читаю в этомРасчет CRC в Java

 1 byte is SOH 
     2 byte packet number 
     3 byte nagative of packet number 
next 128 bytes data 
     2 bytes CRC sent from other side. 

я должен вычислить CRC 128 байт данных и 2 байта стс, посылаемого с другой стороны, что я должен сделать это один байт и должны comapare с моим вычисленной стс. Как я могу это сделать в java?

+0

Хорошо, в каком курсе задаются задания по чтению последовательных портов в Java? http://stackoverflow.com/questions/348777/reading-com-port-value-and-printing-in-textarea-which-located-inside- the-panel-in –

ответ

1

Sun JDK 1.6 содержит sun.misc.CRC16, но есть вероятность, что это не тот CRC16, который вы ищете, так как используется несколько разных полиномов.

+0

Класс Sun использует init = 0, полином = 0x1021. Он также использует наивную побиточную реализацию, а не управляемую таблицами реализацию. – EJP

5

Попробуйте использовать Jacksum.

+0

Страница конечного пользователя для Jacksum: http://www.jonelo.de/java/jacksum/index.html –

1

Вот мой код C, который является тривиальным для порта на Java - вы можете использовать его любым способом. Ссылки на слово относятся к 16-битовому значению без знака - вы должны иметь возможность использовать символ вместо этого в Java.

Это было слишком долго, так как я работал с 16-битным CRC, поэтому не помню, есть ли варианты, основанные на посеве. Я уверен, что я использовал этот код в реализации X-Modem в C, когда.

Источник размещен на tech.dolhub.com.

Смежные вопросы