테스트를 통해 .Net SerialPort 객체를 통해 통신을 거부하는 두 대의 랩톱을 발견했습니다. 아마도 응용 프로그램이 .Net 4.0을 사용하고 있다고 말하는 것으로 시작해야합니다. 이 설정입니다 :.Net SerialPort 객체가 통신하지 않습니다.
- 두 노트북은 테라 기간 이러한 직렬 포트를 사용하여 통신 마더 보드 또는 포트가 테스트되고
- 어떤 USB 시리얼 포트 에뮬레이터의 내부 직렬 포트 중 하나에 통신이 없다
- 이 아니며이 이미 사용 중입니다.
- 없음 예외는
- 이 소프트웨어는 객체가 이전에 초기화되는 방법을 ErrorReceived 이벤트 핸들러는 여기
라고하지 않을
serialPort.Write(packet, 0, nBytes);
패킷이 byte[]
하고 nBytes 전송 될 데이터의 길이 : 포트 단순히 호출 오전에 기록합니다. 소프트웨어가 직렬 포트를 열고 지연 후 포트가 데이터를 전송하지 않고 닫히기 때문에 쓰기 타임 아웃이 트리거 된 것처럼 보입니다.
다음 로그를 직렬 포트 모니터로 캡처 할 수있었습니다. first log은 COM 포트가 열리고 구성된 다음 데이터가 전송되기를 기대합니다. second log은 랩톱 중 하나입니다. 포트가 열리는 것을 볼 수 있지만 포트는 아무 것도 전송하지 않고 닫힙니다.
로그 파일에는 두 가지 주요 차이점이 있습니다. 랩톱의 로그에는 RTS off
이 포함되어 있으며 좋은 로그는 아닙니다. 또한 랩톱의 로그는 쓰기 타임 아웃을 0으로 설정 한 것으로 보입니다. 이 노트북에서
Set timeouts: ReadInterval=-1, ReadTotalTimeoutMultiplier=-1, ReadTotalTimeoutConstant=10000, WriteTotalTimeoutMultiplier=0, WriteTotalTimeoutConstant=1000
그리고 로그 : 좋은 로그에서
Set timeouts: ReadInterval=-1, ReadTotalTimeoutMultiplier=-1, ReadTotalTimeoutConstant=-2, WriteTotalTimeoutMultiplier=0, WriteTotalTimeoutConstant=0
는 어떻게이 문제의 원인이 될 수 있으며, 나는 그것을 중지하기 위해 무엇을 할 수 있는가?
로그에서 핸드 쉐이킹을 문제로 지적 했으므로 핸드 쉐이킹을 비활성화하여 다시 시도하십시오. 아마도 신호가 RS-232의 허용 전압 범위를 약간 벗어나거나 전체 범위를 수용하지 못할 수도 있습니다. 랩톱 컴퓨터의 포트는 데스크톱보다 전력을 절약하는 경향이 있으므로 사양의 더 낮은 전압 범위에서 작동합니다. –