
PC에 대한 직렬 포트 연결이 있는 최신 Wyse 클라이언트(Z90D7 모델)를 테스트하고 있습니다. 전용 장비를 사용하는 외부 고객이 있지만 테스트에는 PC를 사용합니다. Citrix를 통해 클라이언트에서 C# 애플리케이션을 실행합니다. 기존 Wyse 장비에서 사용 중인 애플리케이션을 실행하면 모든 것이 오류 없이 잘 실행됩니다. 그러나 새 장비에서는 직렬 포트가 10번 시도마다 한 번씩 작동합니다. 다른 경우에는 오버런 오류, 패리티 오류 또는 RXOver 오류가 발생합니다.
포트가 열리고 포트가 열린 후 여러 명령이 실행되는 것을 로깅을 통해 확인했습니다. 그러나 무작위 오류가 발생합니다.실제 데이터가 전송되기 전에. 이것이 버퍼 문제일 수 있다는 내용을 여러 곳에서 읽었지만 데이터가 수신되기 전에 발생하는 오류를 언급하는 게시물을 본 적이 없기 때문에 완전히 확신할 수는 없습니다.
나는 또한 행운없이 핸드셰이킹과 더 큰 읽기/쓰기 버퍼를 사용하려고 시도했습니다. 나는 이 장치에 새 케이블과 두 번째 COM 포트를 사용해 보았으나 역시 운이 없었습니다. 기본 설정은 다음과 같습니다.
9600 보드, 짝수 패리티, 8 데이터 비트, 1 정지 비트
이것이 Citrix에서 실행되고 있다는 점을 감안할 때 우리는 또한여기에 표시된 net use 명령을 실행하세요.무슨 일이 일어나기 전에. 그렇지 않으면 직렬 연결이 항상 연결되어 있다고 말하고 데이터를 수신하지 못하게 됩니다(이는 기존 장비에서도 발생합니다). 우리가 실행 중인 정확한 명령(물론 앱 이름은 변경됨)은 다음과 같습니다.
net use com1 /DELETE
net use com2 /DELETE
net use com1: \\client\com1:
net use com2: \\client\com2:
start /d "D:\myapp" MyApplication.exe
직렬 포트를 다루어 본 사람이라면 세 가지 오류가 이렇게 번갈아 나타나는 것을 들어본 적이 있습니까? 이 문제를 일으킬 수 있는 결함이 있는 포트(또는 두 개의 결함이 있는 포트) 외에 다른 것이 있습니까? 하드웨어 버퍼 크기가 문제일 수 있다고 생각하지만 이를 극복할 수 있는 방법을 찾을 수 없습니다.
답변1
모든 오류는 데이터가 양방향으로 이동하지 않는다고 말하는 것 같습니다.
RXOver가 수신 버퍼를 충분히 빨리 비우지 않습니다. 오버런은 칩 전송 버퍼를 충분히 빠르게 비우지 않는 직렬 포트 드라이버입니다.
하드웨어 버퍼 크기를 늘릴 수 있는 방법이 있는지 잘 모르겠습니다. API를 통해 Windows 버퍼를 늘릴 수 있지만 드라이버는 이를 무시할 수 있습니다.
문제에 대한 더 나은 관점을 얻으려면 더 많은 장비를 사용해 보는 것이 좋습니다. 테스트 컴퓨터와의 호환성 문제일 수도 있습니다.
기사 5가지 일반적인 직렬 포트 문제 이러한 문제에 대한 몇 가지 가능한 이유를 나열합니다.
잘못된 통신 매개변수
두 장치 모두 전송 속도, 패리티, 데이터 비트 수 및 정지 비트 수를 포함하는 동일한 통신 매개변수로 설정되어야 합니다.잘못된 직렬 케이블
- 불량 직렬 케이블
- 잘못된 배선