2011-12-14 2 views
0

ANSI C Windows 7 환경에서 하드웨어 및 가상 직렬 포트 조합을 사용하고 있습니다. 이 프로젝트에는 두 가지 응용 프로그램이 있습니다. 첫째 응용 프로그램이 개발 중이며 하드웨어 COM 포트와 가상 COM 포트에 모두 연결됩니다. 두 번째는 레거시 응용 프로그램입니다 (이미 개발되었으므로 변경할 수 없습니다). 이것은 가상 NULL 모뎀을 통해 동일한 가상 COM 포트에만 연결됩니다.Windows 7의 ANSI C - 프로그래밍 방식으로 직렬 이벤트 생성 (RS232)

첫 번째 응용 프로그램에서는 COM 이벤트 처리기를 사용하여 하드웨어 COM 포트에 연결된 직렬 메시지 생성기에서 생성 된 메시지를 수신하고 처리 할 수 ​​있습니다. 그러나 가상 COM 포트는 COM 이벤트를 생성하지 않으므로 타이밍 루프를 사용하여 가상 포트의 시뮬레이션 된 입/출력 대기열을 주기적으로 확인하는 것으로 제한됩니다. 첫 번째 응용 프로그램에서 COM 트래픽을 제어하는 ​​데는 문제가 없지만 두 번째 응용 프로그램에서는 들어오는 직렬 트래픽을 처리 할 수 ​​있도록 COM 이벤트를 확인해야합니다.

COM 이벤트를 예상하는 레거시 응용 프로그램에서 볼 수 있도록 한 응용 프로그램에서 Windows COM (RS232) 이벤트를 프로그래밍 방식으로 생성하는 방법이 있습니까? 이벤트에 의해

, 나는 같은 전형적인 comcallback 인식하는, 말하는거다 : 등 LWRS_RXCHAR, LWRS_RXFLAG, LWRS_TXEMPTY, LWRS_CTS,

+1

더 나은 가상 널 모뎀 드라이버를 구매하십시오. –

+0

한스, 어떤 제안있어? : com0com 및 VSPE 보았다. com0com은 API를 제공하지 않으며 VSPE는 무의미한 것으로 보입니다. – ryyker

답변

0

여기 루프를 닫으면 (약간 늦음), @Evert 시도에 감사드립니다.

해결 방법은 올바른 공급 업체를 선택하는 것이 었습니다. 가상 COM 포트의 올바른 구성을 생성하려면 좋은 커널 모드 드라이버가 필요했습니다. Eltima (www.eltima.com)는 바로 그런 제품을 제공했습니다. 사용 가능한 API가있는 훌륭한 제품. 문제 해결

0

이 작동하는지 모르겠어요,하지만 당신은 시도 할 수 있습니다 레거시 COM 인터페이스에서 루프백을 만들 수 있습니까? 그런 다음 그것에 쓸 수 있고 COM 이벤트를 트리거합니다.

+0

안녕하세요, 기존 앱이 UART에서 완전히 격리되어 이벤트에 대한 가시성이 없습니다. 이는 의도적으로 설계된 동작입니다. 레거시 응용 프로그램에서 볼 수있는 이벤트는 가상 COM 포트 또는 새 (개발 된) 응용 프로그램에서 생성 된 이벤트로 제한해야합니다. 감사합니다. Ryyker – ryyker

관련 문제