문제

주변 장치와 통신하기 위해 RS232를 사용하는 일부 레거시 시스템을 다루고 있습니다. 나는 com 인터페이스에 대해 그다지 경험이 없습니다. COM 포트를 열고 사용할 수있는 코드가 있지만 다른 응용 프로그램에서 사용하는 포트를 열 수는 없습니다. 업데이트 된 통신에 동일한 프로토콜을 사용할 수 있도록 패킷을 블랙 박스해야합니다.

오픈 COM 포트에 들어오는 패킷을 "중간 맨"수신 할 수있는 방법이 있습니까? .NET을 사용하고 있지만 모든 유형의 솔루션에 열려 있습니다.

(나는 찾았다 이것 밖에서, 그러나 나는 이것이 나를 위해 효과가있을 것이라고 생각하지 않습니다.)

도움이 되었습니까?

해결책

Com0com을 사용했습니다. 가상 COM 포트를 설정하는 데 좋습니다. 전혀 도움이되지 않습니다.

COM 포트 인터페이스는 기본적으로 '파일 읽기'입니다. 내 응용 프로그램은 이미 다른 인스턴스를 읽는 COM 포트에 연결하려고 할 때 예외가 발생합니다. 읽기 쓰기 대신 '읽기 전용'으로 열 수 있는지 확실하지 않지만 시도해 볼 가치가 있습니다.

데이터를 로그 파일로 포크 할 수있는 가상 COM 포트를 작성할 수 있어야합니다. com0com은 오픈 소스이므로 시작점으로 사용할 수 있습니다.

또 다른 가능한 솔루션은 픽업하는 것입니다 RS232 스플리터 케이블 직렬 신호를 다른 직렬 포트로 포크합니다.

또는 또 다른 가능성은 다음과 같습니다 일련의 스나이퍼 프로그램 (또는 an 오픈 소스 스나이퍼).

또는 시도하십시오 hub4com 앱 동일한 com0com 웹 사이트에서!

다른 팁

"중간 사람"의 어떤 방법이 있습니까?

예, 많은 것이 있습니다. "필터 드라이버"의 개념을 통해 Windows에서 강력하게 지원됩니다. 이러한 드라이버는 I/O 요청을 받고 지나가는 모든 것을 볼 수있는 드라이버보다 앞서 삽입 할 수 있습니다. 일반적으로 I/O 요청을 변경하기위한 것이지만 단순히 요청을 모니터링하는 데 매우 적합합니다. 중간에있는 남성.

그러한 운전자의 표준 예는 탁월한 것입니다 Sysinternals의 Portmon 유틸리티. 앱이 구성 및 데이터를 포함하여 직렬 포트로 보내고받는 모든 것을 보여줍니다. Google "Serial Port Filter Driver"(소스 코드 샘플의 무거운) 및 "Serial Port Monitor"와 같은 많은 앱이 있습니다.

이것과 함께 한 각주는 64 비트 버전의 Windows에 문제가있는 경향이 있습니다. Portmon을 포함하여 이러한 앱의 대부분은 32 비트 버전에서만 작동합니다. 64 비트 버전을 사용하면 인증 된 드라이버 만 설치할 수 있으며 비용을 정당화하기 위해 이러한 앱을 판매하는 데는 돈이 거의 없습니다. 쇼핑 할 때 이것을 조심하십시오.

나는이 같은 길을 따라 갔다. 하드웨어 스플리터가 가장 쉬운 솔루션입니다.

HUB4COM 설정에는 "새 하드웨어 추가"마법사가 포함됩니다. 많은 기계, 지리적으로 분리 된 기계 또는 기술적으로 정통하지 않고 필요한 권한이없는 사용자가있는 경우 설치가 어색 할 수 있습니다.

이것이 레거시 응용 프로그램 인 경우 NTVDM에서 실행됩니까? 그렇다면, 당신은 그것을 실행할 수 있습니다 DOSBOX 대신 DOSBOX 코드를 변경하여 직렬 포트로 보내거나 수신하는 것 외에도 파일에 쓸 수 있습니다. Dosbox도 크로스 플랫폼입니다.

당신은 또한 사용할 수 있습니다 TCPCOM 데이터를 이더넷 패킷으로 변환하고 Wireshark로 모니터링하고 다른 곳에서 방송합니다. 그런 다음 TCPCOM의 다른 인스턴스를 사용하여 가상 COM 포트를 포함하여 원하는 COM 포트로 전달합니다. 이제 본질적으로 이더넷을 통해 데이터를 납치했습니다.https://sourceforge.net/projects/combytcp/?source=directory

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top