2009-11-20 5 views
0

일부 하드웨어와 통신하기 위해 직렬 포트 통신을 사용하는 프로그램이 있습니다. 문제 없어. 그런 다음 두 개의 GSM Modens를 그림에 추가했습니다. VB에서는 하나의 프로토콜 (8 데이터, 없음, 1)로 모뎀에 COM 포트를 열었고 모뎀 간 통신이 열려 있고 실행 중이면 포트를 닫은 다음 새 프로토콜 (7 데이터, 심지어 패리티 2 중지)를 내 하드웨어로 보냅니다. 하드웨어는 몇 년 전에이 속도로 표준화되었으므로 이것을 변경할 수 없으며 대부분의 모뎀은 7, e, 2 프로토콜을 지원하지 않습니다.직렬 통신

모뎀 지원을 확장하고 포트가 닫힐 때 많은 사람들이 끊어지기를 원합니다. 하드웨어 핸드 셰이 킹을 사용하지 않습니다.

여기 내 질문이 있습니다. 직렬 포트를 닫지 않고 프로토콜을 가장 효과적으로 변경할 수 있습니까?

  • 아무도 하드웨어 설정을 변경하지 않고 어떻게 수행 할 수 있는지 다른 생각이 있습니까?
  • 가상 직렬 포트를 만드시겠습니까? (방법?)
  • 아이디어?
+0

문제를 살펴 나에게 분명하지 않다. 어떻게 다른 하드웨어를 같은 포트에 연결하려고합니까? – Henrik

+0

아니요! 그것은 같은 하드웨어입니다. 하드웨어 연결은 PC -> 모뎀 -> 모뎀 -> PLC입니다. 대부분의 최신 모뎀은 7 데이터, 짝수 패리티 및 2 정지 비트를 지원하지 않습니다. 그래서 다른 프로토콜을 사용하여 모뎀에 연결해야합니다. 그런 다음 PLC에 연결하는 데 사용합니다. – TAT

답변

1

진정한 직렬 연결 옵션을 설정하려면 Win32 API communication functions을 사용해야합니다. 내가 아는 한이 설정을 활성화하려면 포트를 닫았다가 다시 열 필요가 없습니다. 설정 후 바로 작동합니다 (예 : this example).

하나 또는 두 개의 설정 만 변경하려는 경우 해당 GetX 함수로 구조를 미리 채우고 변경하고 SetX 함수를 호출해야합니다.

어쩌면 전에 문장과 대조적으로, 첫 번째 SetX 호출의 기본 설정에 의존하지 않아도됩니다. 보편적 인 설정 (예 : 전송 속도, 정지 비트 등)을 변경하는 프로그램이 많이 있지만 XoffChar 등의 드문 프로그램은 변경되지 않았습니다. 그렇게하면 다른 프로그램이이 설정을 변경하게되어 다른 프로그램이 직렬 포트로 설정된 설정을 사용하기 때문에 프로그램이 갑자기 직렬 장치와 더 이상 통신 할 수없는 이유가 궁금합니다.

그리고 난 잊어 버리기 전에 당신이 C#으로는 Win32 API 함수를 사용하려는 경우, PInvoke.net

+0

당신의 ripply 주셔서 감사합니다. 도움이 될지도! 가능한 한 빨리 살펴 보겠습니다. 먼저 다른 프로젝트에서 방해가되지 않도록 몇 가지 다른 점이 있습니다. 하지만 도움을 주셔서 감사합니다. :-) – TAT

관련 문제