콘텐츠로 이동
무료 평가 시작

pdcomm::modbus::QtEndpoint

클래스

QJsonObject 명령을 받아 응답의 result 객체를 반환하는 Modbus 엔드포인트입니다.

class QtEndpoint

생성하면 기본 구성으로 연결되지 않은 엔드포인트를 만들며, 라이브러리가 엔드포인트를 만들 수 없으면 std::runtime_error를 던집니다. 이 객체는 이동할 수 있지만 복사할 수는 없습니다.

MFC 사용 예제 examples/modbus-mfc/main.cpp와 같이 로컬 데이터 모델의 홀딩 레지스터(holding register) 0에 씁니다.

#include <QJsonArray>
// ...
pdcomm::modbus::QtEndpoint endpoint;
const QJsonObject result = endpoint.call(
    QJsonObject{{"action", "execute"}, {"pdu", QJsonArray{6, 0, 0, 0, 9}}});
// result: {"response":[6,0,0,0,9],"source":"local","status":"success"}

참고

  • 클라이언트 request나 connect는 응답, 연결 또는 구성된 타임아웃(timeout)까지 블로킹합니다. 이런 명령은 워커 스레드(예: 엔드포인트를 소유한 QThread)에서 실행하고, 결과는 대기열 시그널(queued signal)로 GUI 스레드에 넘깁니다. GUI 스레드를 블로킹하지 않습니다. 서버나 게이트웨이는 그 워커가 {"action":"poll"}을 주기적으로 보내는 동안에만 요청에 응답합니다.

멤버

call

메서드

JSON 명령 하나를 실행하고 결과 객체를 반환합니다.

QJsonObject call(const QJsonObject &command)

명령은 압축된 UTF-8 JSON으로 직렬화되어 Endpoint::call()에 전달됩니다. 명령 집합은 pdcomm_modbus_call()을 참고합니다.

매개변수

이름설명
commandaction 멤버가 있는 명령 객체입니다.

반환값

{"ok":true,"result":...} 응답의 result 멤버입니다.

참고

  • 예외 std::runtime_error: 명령이 실패하면 what()이 오류 응답 {"error":"...","ok":false}이고, 라이브러리 호출 자체가 실패하면 고정 텍스트입니다.