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

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

QT 질문/답변

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

페이지 정보

작성자 no_profile 동도리군 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 댓글 0건 조회 538회 작성일 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,270건 1 페이지
QT 질문/답변 목록
번호 제목 글쓴이 조회 추천 날짜
열람중 QT/Win32 no_profile 동도리군 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 539 0 04-19
5269 QT/Embedded no_profile 비회원로그인 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 549 0 04-14
5268 QT/Embedded no_profile 지루 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 601 0 04-07
5267 QT/Embedded no_profile 슈슈 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 603 0 03-30
5266 QT/Embedded no_profile inseok 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 610 0 03-24
5265 QT/Embedded no_profile csyinw 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 697 0 02-22
5264 QT/Embedded no_profile 박셕 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 902 0 02-10
5263 QT/Embedded no_profile 박취 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 683 0 01-31
5262 QT/Win32 no_profile 냠냠10 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 861 0 01-31
5261 QT/Embedded no_profile wlsqkr 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 733 0 01-31
5260 QT/Win32 no_profile 이건칠님 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 703 0 01-16
5259 QT/Embedded no_profile QT를시작함 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 1000 0 12-05
5258 QT/X11 no_profile 오슈 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 886 0 12-05
5257 QT/Embedded no_profile QT를시작함 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 954 0 12-01
5256 QT/Embedded no_profile 미소바람 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 848 0 11-28
5255 QT/X11 no_profile 박취 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 789 0 11-16
5254 QT/Win32 no_profile fndl13tp 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 1037 0 11-12
5253 QT/Win32 no_profile 네주인 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 1049 0 10-23
5252 QT/Win32 no_profile 뽕구리뽕 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 1080 0 10-18
5251 QT/Win32 no_profile 네주인 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 945 0 10-16
5250 QT/Embedded no_profile 백용클 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 1087 0 09-14
5249 QT/Embedded no_profile devilqoo 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 1257 0 09-10
5248 QT/Embedded no_profile ZINO 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 1158 0 08-24
5247 QT/Embedded no_profile 박취 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 992 0 07-20
5246 QT/Win32 no_profile 준재 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 1464 0 07-17
5245 QT/Embedded no_profile 민토고찡 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 1297 0 07-12
5244 QT/X11 no_profile 물만부은라면 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 1102 0 07-11
5243 QT/Win32 no_profile NaturalSoft100 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 1358 0 07-03
5242 QT/Win32 no_profile genesisis 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 1149 0 06-26
5241 QT/Embedded no_profile 둣바이홋 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 1253 0 06-20
게시물 검색

  • 게시물이 없습니다.

회원로그인

설문조사

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

접속자집계

오늘
522
어제
751
최대
4,337
전체
4,608,043

Copyright © korone.net. All rights reserved.