2013-01-14 4 views
1

USB를 통해 연결된 Intellibox Basic (기차를 제어 할 수있는 상자)과 통신하는 Ada 프로그램이 있습니다.Linux에서의 Ada GNAT.Serial_Communications 동작

Windows에서는 특정 직렬 드라이버 (UART Bridge VCP에 CP210x USB)를 설치해야했습니다. 그 드라이버로 상자와 완벽하게 통신 할 수 있습니다. 그것은 상자에 명령을 보내는 것을 의미합니다.

리눅스에서 나는 /dev/ttyusb0을 통해 통신 중이며 상자에서 메시지를 가져올 수 있지만 명령을 상자에 보낼 수 없습니다. 아무 반응이 없습니다. 나는 실수를하지 않는다.

Linux에서 GNAT.SerialCommunication의 동작이 다릅니 까? 프로그램은 동일합니다. Linux에서 작동하도록 설치해야합니까?

예 : 일반적인 2 바이트 명령에는 Command가 첫 번째 Byte로 CRC 검사가 두 번째 것으로 있습니다.

답변

2

어느 시점에서 Serial_Communication에 문제가 발생하여 Linux에서 하드웨어 핸드 셰이크가 활성화되어있는 것으로 나타났습니다. 그것은 g-sercom.adb에서 하드 코딩되어 있으며 "CRTSCTS"를 찾습니다. Intellibox가 하드웨어 핸드 셰이크를 사용하지 않으면 Write()가 차단됩니다.

플래그에서 CRTSCTS 마스크를 제거하여 해결할 수 있다고 생각합니다.

+0

불행히도 그건 내 문제를 해결하지 못했습니다. 여전히 IB에 메시지를 보낼 수 없습니다. 위에서 언급 한 드라이버를 설치해야합니까? – Norman