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()을 참고합니다.
매개변수
| 이름 | 설명 |
|---|---|
command | action 멤버가 있는 명령 객체입니다. |
반환값
{"ok":true,"result":...} 응답의 result 멤버입니다.
참고
- 예외
std::runtime_error: 명령이 실패하면what()이 오류 응답{"error":"...","ok":false}이고, 라이브러리 호출 자체가 실패하면 고정 텍스트입니다.