2017-07-09 2 views
0

salut je veux recevoir des données de FPGA par Ethernet avec qt. Je peux écrire des données à fpga mais malheureusement je ne peux pas recevoir de données. après avoir écrit x "c000" à fpga, il devrait envoyer des données mais mon code ne s'est pas éveillé. j'écris ce code pour recevoir des données mais je ne peux pas m'aider s'il vous plaît.lire tcpsocket par qt

  QByteArray ba2; 
     ba2.resize(2); 
     ba2[0] = 0x00; 
     ba2[1] = 0xc0; 
     Client ob; 
     ob.connectToHost(); 
     ob.writeData(ba2); 



    QByteArray Client:: readback(QByteArray data) 
    { 
     qDebug() << socket->readAll(); 

     return data; 
    } 

void Client::connectToHost() 
{ 
socket->connectToHost("192.168.100.17", 1134); 

} 


void Client::close() 
{ 
socket->close(); 

    } 

Client::Client(QObject *parent) : QObject(parent) 
    { 
socket = new QTcpSocket(); 
connect(socket, SIGNAL(readyRead()), this, SLOT(readback(QByteArray data))); 

     } 

Répondre

0

Essayez asynch:

auto t = make_unique<QTcpSocket>(); 
QObject::connect(t.data(),&QTcpSocket::connected,[&t](){ 
QDataStream writer(t.data()); 
writer << static_cast<quint16>(0xc000); 
}); 
QObject::connect(t.data(),&QTcpSocket::readyRead,[&t](){ 
qDebug() << t->readAll(); 
}); 
+0

il ne peut pas résoudre mon problème beacaus readyRead() ne fonctionnent pas. – mehdi

+0

Avez-vous une boucle d'événement dans ce fil? le bloquez-vous en quelque sorte ('while (true)' par exemple)? – IlBeldus