2011-08-21 2 views
0

직렬 포트로 연결된 장치 용 드라이버를 작성하고 있습니다. 불행히도, 9 번째 데이터 비트는 문자가 명령으로 해석되어야하는지 아니면 데이터로 해석되어야 하는지를 나타냅니다.직렬 포트에 수신 된 문자로부터 패리티 비트를 얻는 방법은 무엇입니까?

오류가 추가 문자 (NUL)로 표시되기 때문에 기본 제공 패리티 검사를 사용할 수 없습니다. 그리고 나는 두 개의 데이터 바이트 또는 패리티 오류가있는 하나의 데이터 바이트를 받았다는 것을 알지 못합니다.

다른 곳에서이 패리티 비트를 얻는 방법이 있습니까?

편집 : 분명히이 문제는 Windows에서도 발생합니다 (http://gilzu.com/?p=6 참조). 결국 직렬 드라이버를 다시 작성해야합니다. 이것은 Linux에서 유일한 옵션입니까?

+0

도움이 될지 모르겠으나 'PARMRK'를 사용 해본 적이 있습니까? 그렇다면 패리티 오류가있는 문자 앞에 '\ 377 \ 0' 접미사가 붙습니다. 즉, 0xFF 0x00입니다. – Hasturkun

+0

@Hasturkun : 아이디어를 가져 주셔서 감사합니다. 그런 다음 장치에서 0xFF와 0x00을 받았는지 알 수 없습니다. 패리티 검사기. – SecStone

+0

UART가 패리티를 처리하지 않습니까? AFAIC 당신은 정말로 그것에 도달 할 수 없다,하지만 당신은 모든 패리티를 얻을 수있는 패리티를 설정할 수 있습니다. – Keith

답변

0

내가보기에 \377 \0 패턴이 입력에 나타나지 않는다고 가정하면 PARMRK을 그대로 사용할 수 있어야합니다. 그렇지 않으면 직렬 드라이버를 수정하여 각 바이트에 패리티를 추가 할 수 있습니다 (또는이 바이트에 패리티 오류가있는 경우). 나는 전자와 함께 갈 것이다.

관련 문제