QModbusTCpClient 에 관련해서 질문 드립니디다. > QT 질문/답변

본문 바로가기
사이트 내 전체검색

QT 질문/답변

QT/Win32 QModbusTCpClient 에 관련해서 질문 드립니디다.

페이지 정보

작성자 no_profile 동도리군 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 댓글 0건 조회 858회 작성일 20-04-19 17:59

본문

modbus 통신 장치가 여러개 있다고 생각해서
접속 정보를 여러개 들고 있기 위해서 기본 구성을 아래와 같이 했습니다.

typedef struct clientInfo {                                                // pcs, bms 연결 정보
    QString ip;
    QString port;
    bool is_use;
    QString tp;
    bool is_conntected = false;
    int id;
    int slaveid;
    QModbusTcpClient* cl; // = new QModbusTcpClient();
} ClientInfo;

class clients : public QObject
{
    Q_OBJECT
public:
    explicit clients(QObject *parent = nullptr);
    ~clients();

    int isRun = false;
    QMap<int,ClientInfo>* devices; // 디바이스 정보들
    QMultiMap<int, QString> req_data; // modbus 요청 할 raw data

생략


.c 파일

void clients::addDevice(int i, QString ip, QString port, bool is_use, QString tp, int slaveid) //-- 디바이스 정보 추가
{
    ClientInfo c;
    c.ip = ip;
    c.port = port;
    c.is_use = is_use;
    c.tp = tp;
    c.is_conntected = false;
    c.id = i;
    c.slaveid = slaveid;
    c.cl = new QModbusTcpClient(this);
    devices->insert(i, c);
    //qDebug()<<"add device : "<<QString::number(i)<<" ip : "<<ip;

}


void clients::serviceReadRequestClient(int id)
{
    QList<QString> index = req_data.values(id);
    foreach( QString str, index ) {
        //qDebug()<<"list : "<<str;
        //readRequest(str);

        //-- Test
        const auto table = static_cast<QModbusDataUnit::RegisterType>(3);
        QModbusDataUnit readUnit(table,0,1);
        if (auto *reply = (*devices)[id].cl->sendReadRequest(readUnit, 1)) {
            if( ! reply->isFinished() ) {
                qDebug()<<"reply not finished";
                //connect(reply, &QModbusReply::finished, pms::get()->clt, &clients::act_readRequestReady);
                connect(reply, &(*(*devices)[id].cl)::finished(), []() { qDebug()<<"enter in"; });
            } else {
                qDebug()<<"reply finished and delete ";
                delete reply;
            }
        } else {
            qDebug()<<"auto reply 없읍";
        }
        QThread::msleep(1000);
        //QThread::msleep(pms::get()->vl->client_request_delay);
    }
}



addDevice 메소드를 통해서 장비 정보들을 입력한 후
connectDevice 를 통해서 입력된 모든 정보를 통해 일단 네트워크 접속부터 하게 된 후

while 구문을 통해  각 device에서 is_connected 된 정보들을 확인 한 후 연결된 디바이스의 접속 id 를
serviceReadRequestClient 메소드를 호출할때 넘겨줍니다.

그 후
connect(reply, &(*(*devices)[id].cl)::finished(), []() { qDebug()<<"enter in"; });
를 호출해봤는데 잘 안되네요.
원형은
connect(reply, &QModbusReply::finished, 람다식
으로 해봤는데 역시 않되어서 이것저것 테스트 해보고 있는데 잘모르겠군요.

의문점으로
1. connect 연결을 어떻게 구성을 해야 하는지 궁금합니다.
2. 만약 한 ID에 4개의 sendReadRequest를 보낼경우 첫번째 응답이 완료된 후에 2번째를 보내고 싶을때는 구성을 어떻게 해야하는지 궁금합니다.

질문 읽어주셔서 감사합니다.

추천0

댓글목록

등록된 댓글이 없습니다.

Total 5,246건 1 페이지
QT 질문/답변 목록
번호 제목 글쓴이 조회 추천 날짜
5246 QT/Embedded no_profile thisistophs 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 59 0 10-13
5245 QT/Win32 no_profile 니폴라 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 160 0 09-19
5244 QT/Embedded no_profile 박취 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 142 0 09-15
5243 QT/Win32 no_profile qtchqhekd 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 108 0 09-14
열람중 QT/Win32 no_profile 동도리군 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 859 0 04-19
5241 QT/Embedded no_profile 비회원로그인 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 861 0 04-14
5240 QT/Embedded no_profile 지루 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 901 0 04-07
5239 QT/Embedded no_profile 슈슈 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 919 0 03-30
5238 QT/Embedded no_profile inseok 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 896 0 03-24
5237 QT/Embedded no_profile csyinw 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 1003 0 02-22
5236 QT/Embedded no_profile 박셕 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 1220 0 02-10
5235 QT/Embedded no_profile 박취 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 889 0 01-31
5234 QT/Win32 no_profile 냠냠10 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 1159 0 01-31
5233 QT/Embedded no_profile wlsqkr 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 1020 0 01-31
5232 QT/Win32 no_profile 이건칠님 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 987 0 01-16
5231 QT/Embedded no_profile QT를시작함 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 1296 0 12-05
5230 QT/X11 no_profile 오슈 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 1194 0 12-05
5229 QT/Embedded no_profile QT를시작함 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 1276 0 12-01
5228 QT/Embedded no_profile 미소바람 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 1141 0 11-28
5227 QT/X11 no_profile 박취 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 1007 0 11-16
5226 QT/Win32 no_profile fndl13tp 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 1385 0 11-12
5225 QT/Win32 no_profile 네주인 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 1333 0 10-23
5224 QT/Win32 no_profile 뽕구리뽕 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 1375 0 10-18
5223 QT/Win32 no_profile 네주인 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 1204 0 10-16
5222 QT/Embedded no_profile 백용클 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 1371 0 09-14
5221 QT/Embedded no_profile devilqoo 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 1593 0 09-10
5220 QT/Embedded no_profile ZINO 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 1423 0 08-24
5219 QT/Embedded no_profile 박취 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 1230 0 07-20
5218 QT/Win32 no_profile 준재 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 1772 0 07-17
5217 QT/Embedded no_profile 민토고찡 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 1618 0 07-12
게시물 검색

  • 게시물이 없습니다.

회원로그인

설문조사

새로운 홈페이지에 대한 평가

접속자집계

오늘
800
어제
766
최대
4,337
전체
4,666,680

Copyright © korone.net. All rights reserved.