Hi,
Sorry, I'm developing Modbus protocol and I have some layers. The layer that I show you is the CModbusTCPMaster, and the socket is delivered to the CModbusTCPTransport:
I had simplified it because it's a bit large code.
void CModbusTCPTransport
::setSocket(QTcpSocket* pqSocket
) {
bool bC1 = connect(m_pqTCPSocket,SIGNAL(readyRead()),this,SLOT(readResponse()));
bool bC2 = connect(m_pqTCPSocket,SIGNAL(disconnected()),this,SLOT(disconect()));
}
void CModbusTCPTransport::setSocket(QTcpSocket* pqSocket)
{
bool bC1 = connect(m_pqTCPSocket,SIGNAL(readyRead()),this,SLOT(readResponse()));
bool bC2 = connect(m_pqTCPSocket,SIGNAL(disconnected()),this,SLOT(disconect()));
}
To copy to clipboard, switch view to plain text mode
void CModbusTCPTransport::sendRequest(CModbusRequest* request)
{
int iLength = 8;
char* pcRequest = new char[260];
pcRequest[0] = request->getTransaction() >> 8;
pcRequest[1] = request->getTransaction();
pcRequest[2] = request->getProtocol() >> 8;
pcRequest[3] = request->getProtocol();
pcRequest[4] = request->getLength() >> 8;
pcRequest[5] = request->getLength();
pcRequest[6] = request->getUnitID();
pcRequest[7] = request->getFunctionCode();
m_pqTCPSocket->write(pcRequest,iLength);
//Force the Request to be sent
m_pqTCPSocket->flush();
delete[] pcRequest;
}
void CModbusTCPTransport::readResponse()
{
//Read the Modbus Header (8 bytes)
qint64 bytesRead = m_pqTCPSocket->read(m_cbuffer,8);
}
void CModbusTCPTransport::sendRequest(CModbusRequest* request)
{
int iLength = 8;
char* pcRequest = new char[260];
pcRequest[0] = request->getTransaction() >> 8;
pcRequest[1] = request->getTransaction();
pcRequest[2] = request->getProtocol() >> 8;
pcRequest[3] = request->getProtocol();
pcRequest[4] = request->getLength() >> 8;
pcRequest[5] = request->getLength();
pcRequest[6] = request->getUnitID();
pcRequest[7] = request->getFunctionCode();
m_pqTCPSocket->write(pcRequest,iLength);
//Force the Request to be sent
m_pqTCPSocket->flush();
delete[] pcRequest;
}
void CModbusTCPTransport::readResponse()
{
//Read the Modbus Header (8 bytes)
qint64 bytesRead = m_pqTCPSocket->read(m_cbuffer,8);
}
To copy to clipboard, switch view to plain text mode
Thanks,
Bookmarks