2014-05-09 2 views
1

Java의 직렬 포트와 통신하기 위해 this library을 사용하고 있습니다. 또한 USB를 직렬 변환기를 사용하여 장치에 연결하고 있습니다. 여기 장치에 관련되는 문서이다RS232 시리얼 포트 통신 설정

2.1 물리적 인터페이스 호스트 사이에 필요한 물리적 인터페이스와 VGM는 EIA-232 인터페이스이다.

2.2 논리적 인터페이스를 직렬 데이터 링크 하나 시작 비트, 8 개의 데이터 비트, 웨이크 - 업 비트와 정지 비트와, 제 (BPS) 당 19,200 비트의 속도로 작동한다. 웨이크 업 비트는 메시지의 첫 번째 바이트 인 에 설정해야합니다. 웨이크 업 비트는 메시지의 나머지 부분에 대해 지워 져야합니다. VGM은 호스트에 응답 할 때 웨이크 업 비트를 지워야한다.

직렬 포트에 연결할 때 rs232 라이브러리 설정을 설정하는 방법에 약간의 혼란이 있습니다. 전송 설정, 비트 (5, 6, 7, 8)의 데이터 길이, 정지 비트 (1, 2) 및 패리티 설정이 있습니다. 이러한 설정을 엉망으로 만들 때 물론 나는 다른 출력을 얻습니다 (대부분 휴지통처럼 보입니다). 인용 된 문서와 관련하여 설정을 추측하도록 도와 줄 수 있습니까?

+0

해당 사양에서, 쉬운 해결책은 웨이크 업 비트를 수용하기 위해 9 비트 데이터 프레임을 사용할 수있는 USART를 사용하는 것입니다. 다음은 [9 비트 직렬 포트 쇼핑 조언] (http://superuser.com/questions/411386/seeking-9-bit-serial-port-card-for-windows-pc/411438#411438)입니다. 그렇지 않으면 8 비트 + 패리티의 데이터 길이를 사용해야하며 첫 번째 바이트를 표시하고 남은 바이트의 공간을 다시 구성하도록 패리티를 구성해야합니다. 패리티 비트 (8 비트 데이터 포함)는 웨이크 업 비트와 동일한 비트 위치를 프레임에서 차지합니다. – sawdust

+0

@ 톱밥 흠, 나는 설정과 8 비트 데이터, 19.2kbit boud, 1 스톱 비트 및 패리티로 설정되어 있어도 내가 뭔가를 얻고 있다고 생각합니다. 예를 들어,이 설정으로 Java에서 바이트 배열을로드 할 때 각 새 바이트를 상위 4 개 및 하위 4 개 비트를 사용하여 각 바이트를 2 바이트로 분할하면 문서에서 의도 한대로 적절한 메시지가 생성됩니다. 나는 월요일에 조금 더 놀아야한다. 당신에게 그럴듯한가? –

+0

아니요. 각 바이트를 니블로 분할하는 것은 잘못되어 불필요합니다.패리티 비트 재구성을 시도하는 데 문제가있을 수 있습니다. – sawdust

답변

0

귀하의 프로토콜이 Multidrop bus과 같은 일부 이국적인 응용 프로그램에서 사용되는 추가 9th 데이터 비트를 필요로한다는 것을 알고 있습니다 (Stackoverflow 14212660 참조). 귀하의 경우에는이 9 번째 비트가 "깨우기 비트"라고 불리지 만 자바 라이브러리 나 표준 RS232 응용 프로그램에서는 그러한 이름이나 이름을 찾지 못할 것입니다.

표준 USB 대 직렬 변환기를 사용하는 것이 좋습니다. 그것은 9 데이터

그래서

비트 당신이 특수 하드웨어를 구입하지 않으려면, 패리티 비트를 사용하여

없는 fudging라고 Stackoverflow 14212660 정확히 무엇인가 - 나는 'fudging을 제안 ':

패리티 설정 MARK 및 SPACE는 원하는 설정 "깨우기 비트 세트"와 일치해야합니다. "깨우기 비트가 지워졌습니다". 소프트웨어 Docklight Scripting을 사용하면 무료 평가판에서 이미 이런 종류의 temporary parity switching을 수행 할 수 있습니다. 그러나 다른 도구 나 코드 예제도 있다고 가정합니다. MDB/multidrop 버스는이를 위해 좋은 Google 키워드 여야합니다.