久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2717|回復: 1
收起左側

去年做的基于QT的溫濕度監測系統,這是在QT端運行的完整代碼

[復制鏈接]
ID:718394 發表于 2020-3-29 21:19 | 顯示全部樓層 |閱讀模式
  1. #include "widget.h"
  2. #include "ui_widget.h"

  3. #include <QHostAddress>

  4. #define WNDTITLE "智能家居溫濕度監測系統"

  5. Widget::Widget(QWidget *parent) :
  6.     QWidget(parent),
  7.     ui(new Ui::Widget)
  8. {
  9.     ui->setupUi(this);

  10.     //分配一個套接字對象
  11.     s = new QTcpSocket(this);

  12.     //關聯信號槽
  13.     connect(s, SIGNAL(connected()),
  14.             this, SLOT(slotConnected()));
  15.     connect(s, SIGNAL(disconnected()),
  16.             this, SLOT(slotDisconnected()));
  17.     connect(s, SIGNAL(error(QAbstractSocket::SocketError)),
  18.             this, SLOT(slotError()));
  19.     connect(s, SIGNAL(readyRead()),
  20.             this, SLOT(slotReadyRead()));

  21.     //設置窗口標題
  22.     setWindowTitle(WNDTITLE);
  23. }

  24. Widget::~Widget()
  25. {
  26.     delete ui;
  27. }

  28. void Widget::slotConnected()
  29. {
  30.     //修改按鈕顯示的文本:設置按鈕標題
  31.     ui->pushButton->setText("連接成功");

  32.     //修改窗口標題
  33.     setWindowTitle(QString(WNDTITLE)+"-連接成功");

  34. }

  35. void Widget::slotDisconnected()
  36. {
  37.     //按鈕變亮:按鈕使能
  38.     ui->pushButton->setEnabled(true);

  39.     //修改按鈕顯示的文本:設置按鈕標題
  40.     ui->pushButton->setText("連接");

  41.     //修改窗口標題
  42.     setWindowTitle(QString(WNDTITLE)+"-"+s->errorString());
  43. }

  44. void Widget::slotError()
  45. {
  46.     //按鈕變亮:按鈕使能
  47.     ui->pushButton->setEnabled(true);
  48.     //修改按鈕顯示的文本:設置按鈕標題
  49.     ui->pushButton->setText("連接");

  50.     //修改窗口標題
  51.     setWindowTitle(QString(WNDTITLE)+"-"+s->errorString());
  52. }

  53. void Widget::slotReadyRead()
  54. {
  55.     //服務器每秒發4字節
  56.     //溫度值: 1字節(整數位).0字節(小數位)
  57.     //溫度值: 3字節(整數位).2字節(小數位)
  58.     if(s->bytesAvailable() >= 4){ //判斷套接字緩存是否大于等于4bytes
  59.         //定義4字節數組
  60.         char buffer[4];
  61.         //從套接字緩存讀出4字節
  62.         s->read(buffer, 4);

  63.         QString temp;
  64.         //格式化字符串:顯示溫度值
  65.         temp.sprintf("溫度值:%d.%d", buffer[1], buffer[0]);
  66.         ui->tempLB->setText(temp);

  67.         QString hum;
  68.         //格式化字符串:顯示濕度值
  69.         hum.sprintf("濕度值:%d.%d", buffer[3], buffer[2]);
  70.         ui->humLB->setText(hum);
  71.     }
  72. }

  73. void Widget::on_pushButton_clicked()
  74. {
  75.     //定義一個字符串對象
  76.     QString ip;
  77.     //把行編輯器上的文本保存到ip
  78.     ip = ui->lineEdit->text();
  79.     s->connectToHost(QHostAddress(ip), 59999);

  80.     //按鈕變灰:按鈕失效
  81.     ui->pushButton->setEnabled(false);
  82.     //修改按鈕顯示的文本:設置按鈕標題
  83.     ui->pushButton->setText("連接中...");

  84.     //修改窗口標題
  85.     setWindowTitle(QString(WNDTITLE)+"-連接中...");
  86. }

  87. 透傳服務器main函數:
  88. #include <stdio.h>
  89. #include <string.h>
  90. #include <sys/socket.h>
  91. #include <netinet/in.h>
  92. #include <arpa/inet.h>
  93. #include <unistd.h>
  94. #include "serial.h"
  95. int init_server(ushort port, int num)
  96. {
  97.         int s = socket(AF_INET, SOCK_STREAM, 0);
  98.         if(0 > s){
  99.                 perror("socket");
  100.                 return -1;
  101.         }
  102.         struct sockaddr_in addr = {
  103.                 .sin_family        = AF_INET,
  104.                 .sin_port        = htons(port),
  105.                 .sin_addr        = {
  106.                         .s_addr = INADDR_ANY,
  107.                 },
  108.         };
  109.         socklen_t len = 16;

  110.         if(0 > bind(s, (struct sockaddr *)&addr, len)){
  111.                 perror("bind");
  112.                 goto ERR_STEP;
  113.         }
  114.         if(0 > listen(s, num)){
  115.                 perror("listen");
  116.                 goto ERR_STEP;
  117.         }
  118.         return s;
  119. ERR_STEP:
  120.         close(s);
  121.         return -1;
  122. }
  123. int main()
  124. {
  125.         int fd = init_serial("/dev/ttyUSB0", B115200, 'n', 8, 1);
  126.         if(0 > fd){
  127.                 return -1;
  128.         }
  129.         printf("init M0 device done.\n");

  130.         int s = init_server(59999, 10);
  131.         if(0 > s){
  132.                 return -1;
  133.         }
  134.         printf("Wait for a client ...\n");

  135.         int rws = accept(s, NULL, NULL);
  136.         if(0 > rws){
  137.                 perror("accept");
  138.                 return -1;
  139.         while(1){
  140.                 char buf[36];       
  141.                 int len = 36;
  142.                 char *p = buf;
  143.                 while(len){
  144.                         int size = recv_serial(fd, p, len, 300000);
  145.                         if(0 > size){
  146.                                 return -1;
  147.                         }
  148.                         len -= size;
  149.                         p += size;
  150.                 }
  151.                 printf("temp: %d.%d\n", buf[5], buf[4]);
  152.                 printf(" hum: %d.%d\n", buf[7], buf[6]);
  153.                 if(4 != write(rws, buf+4, 4)){
  154.                         printf("snd temp & hum fail.\n");
  155.                         return -1;
  156.                 }
  157.         }
  158.         return 0;
  159. }

復制代碼


回復

使用道具 舉報

ID:664036 發表于 2020-5-30 21:02 | 顯示全部樓層
請問可以發一下完整壓縮包嗎?
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 精品一区二区三区在线观看国产 | 国产日韩一区二区三区 | 羞羞在线视频 | 超碰97免费在线 | 亚洲高清视频在线观看 | 国产激情一区二区三区 | 国产免费一区二区三区最新6 | 久久国产精品-国产精品 | 国产伦精品一区二区三区照片91 | 欧美日韩国产中文 | 亚洲欧美中文日韩在线v日本 | 亚洲一区二区三区在线视频 | 亚洲精品视频在线观看免费 | 亚洲乱码国产乱码精品精的特点 | 在线亚州 | 久久精品无码一区二区三区 | 国产激情第一页 | va在线| 久久精品男人的天堂 | 九九久久精品 | 国产美女在线观看 | 久久久久久黄 | 国产精品成人一区二区三区夜夜夜 | 国产成人精品999在线观看 | 99视频网站 | 欧美一区二区三区久久精品 | 国产精品久久久久久久免费大片 | 色婷婷一区二区三区四区 | 亚洲成人精品 | 最新国产在线 | 妖精视频一区二区三区 | 欧美激情久久久 | 国产黄色av网站 | 亚洲视频一区二区三区 | 成人免费视频一区 | 亚洲免费在线视频 | 国产丝袜一区二区三区免费视频 | 可以在线看的黄色网址 | 成人在线视频网 | 精品久久久久久亚洲精品 | 日日夜夜狠狠操 |