i used the mechanism SIGNAL SLOT but there is always an increase microprocessor.
here is my code:
connect(m_pSocketUDP, SIGNAL(readyRead()), this, SLOT(MainTreatement()));
void CAcquisition::MainTreatement()
{
quint16 quiPort = m_iPort;
unsigned short sReveivevalidate = 0;
unsigned short sSizePacketReceive = 0;
unsigned short sDeadValue = 0;
T_Buffer *pBuffer=NULL;
while(m_pSocketUDP->hasPendingDatagrams())
{
T_Buffer *pBuffer=NULL;
pBuffer = m_pBufferCirculaire->GetNextBuffer();
if(m_pSocketUDP)
m_pSocketUDP->readDatagram((char*)pBuffer->cData,MAX_SIZE_PACKET,&QHostAddress(m_pConnectionRTAS->szAddress),&quiPort);
sReveivevalidate = *((unsigned short*) &pBuffer->cData);
sSizePacketReceive = *((unsigned short*) &pBuffer->cData[POSITION_SIZE_PACKET]);
sDeadValue = *((unsigned short*) &pBuffer->cData[sSizePacketReceive - SIZE_END_PACKET]);
if(sReveivevalidate == KEY_SECURITY_RTAS && sDeadValue == END_PACKET)
pBuffer->cStatut = VALID_MSG;
if(m_pBufferCirculaire)
m_pBufferCirculaire->EnWriteOnNextBuffer();
}
}
connect(m_pSocketUDP, SIGNAL(readyRead()), this, SLOT(MainTreatement()));
void CAcquisition::MainTreatement()
{
quint16 quiPort = m_iPort;
unsigned short sReveivevalidate = 0;
unsigned short sSizePacketReceive = 0;
unsigned short sDeadValue = 0;
T_Buffer *pBuffer=NULL;
while(m_pSocketUDP->hasPendingDatagrams())
{
T_Buffer *pBuffer=NULL;
pBuffer = m_pBufferCirculaire->GetNextBuffer();
if(m_pSocketUDP)
m_pSocketUDP->readDatagram((char*)pBuffer->cData,MAX_SIZE_PACKET,&QHostAddress(m_pConnectionRTAS->szAddress),&quiPort);
sReveivevalidate = *((unsigned short*) &pBuffer->cData);
sSizePacketReceive = *((unsigned short*) &pBuffer->cData[POSITION_SIZE_PACKET]);
sDeadValue = *((unsigned short*) &pBuffer->cData[sSizePacketReceive - SIZE_END_PACKET]);
if(sReveivevalidate == KEY_SECURITY_RTAS && sDeadValue == END_PACKET)
pBuffer->cStatut = VALID_MSG;
if(m_pBufferCirculaire)
m_pBufferCirculaire->EnWriteOnNextBuffer();
}
}
To copy to clipboard, switch view to plain text mode
Bookmarks