QT检测客户端

来源:互联网 发布:秦美人四灵进阶数据 编辑:程序博客网 时间:2024/06/02 15:51

1.主界面:

 

主界面主要由菜单栏、Control ViewDisplay ViewNetwork Start or Stop View四部分构成。

软件启动后,直接进入主界面,此时Control View里的按钮呈禁止的灰色状态,不能被按下。

菜单栏由三部分构成:打开-〉关闭,帮助-〉使用帮助、关于软件,显示-〉提示窗口。

Network Start or Stop View:在LineText中输入服务器IP,点击Start创建socket,建立连接,并解禁Control View中的按钮,按钮恢复原来的黑色。Stop按钮再次禁止Control View里的按钮,并呈灰色状态,关闭socket

Control View:由六个绿色按钮组成,用于控制M0传感器集成板的部件工作,若服务器发送控制命令成功,则向客户端返回成功提示,客户端接受到提示,会弹出显示成功的窗口。

Display View:动态显示M0采集到的温度、湿度、光照强度属性值。

 

 

2.提示控制成功子界面:

 

 

这个界面由一个stylesheet背景为PNG格式图片的按钮填满,点击整个界面的任意位置即可,返回关闭此窗口。

 

3.使用帮助子界面:

 

 

此界面由两个相同PNG图片呈展开状显示,未设置关闭按钮或菜单选项。

 

4.软件信息子界面:

 

 

此界面设计条状立体视觉,最下方有一个返回按钮,点击关闭窗口。

 

 

 

 

 

 

1.代码部分:

先与服务器软件编写者沟通,确定好交互的数据格式和特定值。

使用 Ui::MainWindow *ui;创建主ui即MainWindows窗口。

使用 Ui::Dialog2 *ui;创建子ui即子窗口。

使用 QTcpSocket *socket;创建socket,在MainWindows中给初值,Start创建实例并与服务器建立连接。

使用 QTimer *actimer;并在Start中创建实例,actimer->start(2000);实现两秒定时。

 

当然所有非界面部件触发事件的槽函数都需要在相对应的头文件中定义。并使用connect();绑定信号和槽。

按钮槽:类似 void MainWindow::on_Button_LED_ON_clicked()

   {

      socket->write(LED_ON,3);

   }

选项槽:类似void MainWindow::on_action_6_triggered()

{

    Dialog *x = new Dialog();

    x->exec();

}

数据接收: void MainWindow::net_recv()

{

    char recv[1028],str[1028];

    float HUMIDITY;

    float TEMPERATURE;

    long int ILLUMINATION;

    socket->read(recv,sizeof(recv));

     if(!(strstr(recv,"ON_LED")||strstr(recv,"OFF_LED")||strstr(recv,"ON_BUZZER")||strstr(recv,"OFF_BUZZER")||strstr(recv,"ON_FAN")||strstr(recv,"OFF_FAN"))){

        Dialog1 *z=new Dialog1();

        z->exec();

     }else{

     sscanf(recv,"%fTEMPERATURE%fHUMIDITY%ldILLUMINATION",&TEMPERATURE,&HUMIDITY,&ILLUMINATION);

     memset(str,0,sizeof(str));

     snprintf(str,sizeof(str),"%.2f",TEMPERATURE);

     ui->TEMPERATURE->setText(str);

 

     memset(str,0,sizeof(str));

     snprintf(str,sizeof(str),"%.2f",HUMIDITY);

     ui->HUMIDITY->setText(str);

 

     memset(str,0,sizeof(str));

     snprintf(str,sizeof(str),"%ld",ILLUMINATION);

    ui->ILLUMINATION->setText(str);

     }

}

数据发送:  类似socket->write(LED_ON,3);

按钮禁止:  ui->Button_FAN_ON->setEnabled(false);

按钮使能:  ui->Button_BUZZER_OFF->setEnabled(true);



结果:



0 0