시간이 많이 걸렸지 만 해결하지 못한 문제가 발생했습니다. 정말 도움이 필요합니다.시리얼 포트에서 데이터를 수신 할 때 혼란스러운 경우
나는 C# wpf로 빌드 된 응용 프로그램을 가지고 있으며 직렬 포트를 통해 오븐과 통신합니다.
보내야하는 프레임은 다음과 같은 형식이어야합니다. [EOT] (GID) (UID) (Temp) [ENQ]
gid uid : 그룹 식별자 및 장치 식별자 (장치의 주소). (eof), (enq) : 메시지 프레임. (temp) 의미 : 온도 값을 알려주십시오.
동일한 주소를 가진 유일한 기계가 응답 할 수 있습니다 (마스터 슬레이브 아키텍처).
응답 메시지의 형식은 다음과 같습니다. [STX] (Temp) <DATA> [ETX].
필드는 온도 값 stx 시작 텍스트 만 포함합니다. etx 최종 텍스트.
나는 데이터 송수신에 아무런 문제가 없으며 연결된 단일 기계에 대한 온도 값을 표시 할 수 있습니다. 하지만 더 많은 컴퓨터를 연결할 때 응답 프레임에 주소가 없으므로 어느 시스템이 내가 보낸 프레임에 응답했는지 알 수 없으므로 응답 할 오븐을 결정할 수 있습니다.
간략한 상황은
-I 데이터를 오븐에 보냅니다.
- 데이터를 받았습니다.
- 어떤 오븐이 대답했는지 결정할 수 없습니다.
하나만 있으면됩니다. 내가 프로토콜 작업 : PS EUROTHERM EuroTherm
의 EI-BISYNCH이 필요한 경우 : 이런 상황에서 EI-Bisynch ASCII Sequence Diagrams
글쎄, 당신은 요청을 보낸 사람을 알고 있습니다. 그래서 보낸 사람 응답에서 확인되지 않으면 조치의 유일한 과정은 새 요청을 보내기 전에 응답을 기다리는 것입니다. –
@ 500 - 내부 서버 오류 : 여기서 문제는 루프에서 모든 사람에게 전송한다는 것입니다. 일부 컴퓨터가 오프라인이거나 꺼져있어서 응답 할 수 없습니다. – user1202382
SerialPort.PortName이 컴퓨터와 일치합니다. –