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

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

QT 질문/답변

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

페이지 정보

작성자 no_profile 동도리군 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 댓글 0건 조회 1,804회 작성일 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 -1,102,601건 1 페이지
QT 질문/답변 목록
번호 제목 글쓴이 조회 추천 날짜
-1102601 Qtopia no_profile 비료침 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 8 0 06-21
-1102602 Qtopia no_profile 비료침 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 12 0 06-20
-1102603 Qtopia no_profile 비료침 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 22 0 06-18
-1102604 QT/Embedded no_profile 지루 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 62 0 06-09
-1102605 QT/Win32 no_profile 에르닉케어 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 162 0 05-12
-1102606 QT/Win32 no_profile 그누그 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 1061 0 02-02
-1102607 QT/Embedded no_profile 슈슈 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 1067 0 01-19
-1102608 QT/Win32 no_profile 타디스 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 1062 0 01-07
-1102609 QT/Embedded no_profile rrrrr 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 650 0 12-23
-1102610 QT/Embedded no_profile thisistophs 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 733 0 12-03
-1102611 QT/Win32 no_profile QT린이 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 1251 0 10-30
-1102612 QT/Embedded no_profile thisistophs 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 708 0 10-13
-1102613 QT/Win32 no_profile 니폴라 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 1387 0 09-19
-1102614 QT/Embedded no_profile 박취 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 1357 0 09-15
-1102615 QT/Win32 no_profile qtchqhekd 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 723 0 09-14
열람중 QT/Win32 no_profile 동도리군 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 1805 0 04-19
-1102617 QT/Embedded no_profile 비회원로그인 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 1786 0 04-14
-1102618 QT/Embedded no_profile 지루 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 1883 0 04-07
-1102619 QT/Embedded no_profile 슈슈 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 2355 0 03-30
-1102620 QT/Embedded no_profile inseok 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 1813 0 03-24
-1102621 QT/Embedded no_profile csyinw 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 2464 0 02-22
-1102622 QT/Embedded no_profile 박셕 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 2704 0 02-10
-1102623 QT/Embedded no_profile 박취 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 2174 0 01-31
-1102624 QT/Win32 no_profile 냠냠10 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 2655 0 01-31
-1102625 QT/Embedded no_profile wlsqkr 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 2432 0 01-31
-1102626 QT/Win32 no_profile 이건칠님 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 2521 0 01-16
-1102627 QT/Embedded no_profile QT를시작함 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 2841 0 12-05
-1102628 QT/X11 no_profile 오슈 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 2592 0 12-05
-1102629 QT/Embedded no_profile QT를시작함 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 2903 0 12-01
-1102630 QT/Embedded no_profile 미소바람 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 2140 0 11-28
게시물 검색

  • 게시물이 없습니다.

회원로그인

설문조사

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

접속자집계

오늘
2,091
어제
2,245
최대
4,337
전체
4,887,801

Copyright © korone.net. All rights reserved.