資源簡介
基于QT的客戶端,實現對自動導引車的遠程監控,有三個線程,主線程實現圖像顯示,socket線程實現通信,control線程實現對小車的控制。
代碼片段和文件信息
#include?“controlthread.h“
#include?“command.h“
#define?SERVER_IP???????????“192.168.1.101“
//10“
#define?SERVER_PORT?????????1989
ControlThread::ControlThread(Qobject?*parent)//?:?Qobject(parent)
{
????isConnected?????????=?false;
}
ControlThread::~ControlThread()
{
????delete?controlClient;
}
void?ControlThread::connect_on()
{
????char?command[5]?=?{START_BYTE_0?START_BYTE_1?MOTO_STOP?0x0?0x0};
????isConnected?=?true;
????sendMassage(command?5);
????qDebug(“controlClient?connect_on\n“);
}
void?ControlThread::connect_off()
{
????isConnected?=?false;
????qDebug(“controlClient?connect_off“);
}
void?ControlThread::run()
{
????int?????ret?=?0;
????controlClient?=?new?QTcpSocket();
????connect(controlClient?SIGNAL(connected())?this?SLOT(connect_on()));
????connect(controlClient?SIGNAL(disconnected())?this?SLOT(connect_off()));
???//?controlClient->connectToHost(SERVER_IP?SERVER_PORT);
????ret?=?controlClient->waitForConnected(5000);????????????//?block?5?seconds?waiting?for?connected
????qDebug(“controlClient?State:?%d\n“?controlClient->state());
????exec();
}
int?ControlThread::sendMassage(char?*data?int?length)
{
????int?ret;
????if?(!isConnected)?{
????????return?-1;
????}
????ret?=?controlClient->write(data?length);
????return?0;
}
評論
共有 條評論