#include "ModbusSEIMgr.h" #include #include "ModbusCCDefs.h" CModbusSEIMgr::CModbusSEIMgr(CModbusRepository *Repo, int ModbusPort, int DevID): CModbusBackend(Repo) { // connect(mModbusTCPSocketHandle,SIGNAL(readyRead()),this,SLOT(ModbusDataReady())); mModbusMode = MODBUS_MASTER_MODE; mModbusPort = ModbusPort; mDeviceID = DevID; mModbusTCPSocketHandle = new QTcpSocket(); connect(mModbusTCPSocketHandle,SIGNAL(readyRead()),this,SLOT(ModbusDataReady())); connect(mModbusTCPSocketHandle,SIGNAL(disconnected()),this,SLOT(SocketDisconnected())); connect(mModbusTCPSocketHandle,SIGNAL(connected()),this,SLOT(SocketConnected())); } CModbusSEIMgr::~CModbusSEIMgr() { if(mModbusTCPSocketHandle->state() != QAbstractSocket::UnconnectedState) { mModbusTCPSocketHandle->disconnectFromHost(); mModbusTCPSocketHandle->waitForDisconnected(1000); } delete mModbusTCPSocketHandle; } int CModbusSEIMgr::ConnectToSlave(QString SlaveIP, int SlavePort) { if(mModbusTCPSocketHandle->state() != QAbstractSocket::UnconnectedState) { return RET_ERROR; } mModbusTCPSocketHandle->connectToHost(SlaveIP,SlavePort); return RET_OK; } int CModbusSEIMgr::DisconnectFromSlave() { if(mModbusTCPSocketHandle->state() != QAbstractSocket::ConnectedState) { qDebug("Trying to disconnect a non connected socket"); mModbusTCPSocketHandle->disconnectFromHost(); return 0; } qDebug("Requesting Disconnection..."); mModbusTCPSocketHandle->disconnectFromHost(); return 1; } void CModbusSEIMgr::SocketConnected() { emit ModbusMasterConnected(this); qDebug("Master: Connection established with slave"); } void CModbusSEIMgr::SocketDisconnected() { ModbusLinkDisconnected(); emit ModbusMasterDisconnected(this); } int CModbusSEIMgr::ReadModbusRegisters() { //return SendReadHoldingRegistersRequest(ZT_DATA_BASE_REGISTER_ADDRESS,4); //Read all 3 registers from ZT (2000 - 2003) return RET_OK; } void CModbusSEIMgr::RegistersDatabaseUpdated(quint16 StartAddress, quint16 Length) { Q_UNUSED(StartAddress) Q_UNUSED(Length) emit ModbusMasterRepositoryUpdated(); qDebug("Database updated with ZT data..."); } void CModbusSEIMgr::ModbusResponseException(quint8 ExceptionCode, quint8 FctCode) { qDebug("Modbus MASTER exception: code:%d Fct:%d",ExceptionCode,FctCode); } int CModbusSEIMgr::SendAN1ToZT() { //return SendWriteHoldingRegistersRequest(CC_AN1_REGISTER_ADDRESS,1); //return SendWriteSingleRegisterRequest(CC_AN1_REGISTER_ADDRESS); return RET_OK; } int CModbusSEIMgr::SendAN2ToZT() { //return SendWriteHoldingRegistersRequest(CC_AN2_REGISTER_ADDRESS,1); //return SendWriteSingleRegisterRequest(CC_AN2_REGISTER_ADDRESS); return RET_OK; }