2009-04-09 2 views
2

x- 모뎀 프로토콜과 133 바이트 패킷을 사용하여 직렬 포트에서 파일을 읽습니다. 나는 128 바이트의 데이터와 내가 단일 바이트을해야 내 계산 된 CRC와 comapare해야 다른 측면에서 보낸 2 바이트의 CRC의 CRC를 계산해야하는Java에서 CRC 계산

 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. 

에 을 읽고 있어요. 어떻게하면 java에서이 작업을 수행 할 수 있습니까?

+0

자바에서 직렬 포트를 읽는 방법에 대한 과제는 무엇입니까? 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, polynomial = 0x1021. 또한 테이블 기반 구현이 아닌 순진한 비트 구현을 사용합니다. – EJP

5

Jacksum을 사용해보세요.

+0

Jacksum의 최종 사용자 페이지 : http://www.jonelo.de/java/jacksum/index.html –

1

여기 내 C 코드는 Java로 포팅하는 것이 간단합니다. 원하는 방식으로 자유롭게 사용할 수 있습니다. 단어에 대한 참조는 16 비트 부호없는 값을위한 것이므로 Java에서 char을 대신 사용할 수 있어야합니다.

16 비트 CRC로 작업 한 이후로 너무 오래되었습니다. 따라서 시드를 기반으로 한 변형이 있는지는 기억하지 않습니다. 나는 X-Modem 방식의 C 구현에서이 코드를 사용했을 때 꽤 확신한다.

출처는 tech.dolhub.com입니다.

관련 문제