智能家居客户端与服务器:基于Qt和C语言的实现
#include
class MainWindow : public QMainWindow { Q_OBJECT
public: MainWindow(QWidget *parent = nullptr) : QMainWindow(parent) { // 登录界面 QWidget *loginWidget = new QWidget(); QGridLayout *loginLayout = new QGridLayout(); QLabel *usernameLabel = new QLabel("Username:"); QLabel *passwordLabel = new QLabel("Password:"); QLineEdit *usernameEdit = new QLineEdit(); QLineEdit *passwordEdit = new QLineEdit(); QPushButton *loginButton = new QPushButton("Login");
loginLayout->addWidget(usernameLabel, 0, 0);
loginLayout->addWidget(usernameEdit, 0, 1);
loginLayout->addWidget(passwordLabel, 1, 0);
loginLayout->addWidget(passwordEdit, 1, 1);
loginLayout->addWidget(loginButton, 2, 0, 1, 2);
loginWidget->setLayout(loginLayout);
// 控制界面
QWidget *controlWidget = new QWidget();
QGridLayout *controlLayout = new QGridLayout();
QLabel *lightLabel = new QLabel("Smart Light:");
QLabel *acLabel = new QLabel("Air Conditioner:");
QLabel *humidifierLabel = new QLabel("Humidifier:");
QLabel *curtainLabel = new QLabel("Curtain:");
QLabel *modeLabel = new QLabel("Mode:");
QCheckBox *lightCheckBox = new QCheckBox();
QCheckBox *acCheckBox = new QCheckBox();
QCheckBox *humidifierCheckBox = new QCheckBox();
QCheckBox *curtainCheckBox = new QCheckBox();
QComboBox *modeComboBox = new QComboBox();
QPushButton *saveButton = new QPushButton("Save");
controlLayout->addWidget(lightLabel, 0, 0);
controlLayout->addWidget(lightCheckBox, 0, 1);
controlLayout->addWidget(acLabel, 1, 0);
controlLayout->addWidget(acCheckBox, 1, 1);
controlLayout->addWidget(humidifierLabel, 2, 0);
controlLayout->addWidget(humidifierCheckBox, 2, 1);
controlLayout->addWidget(curtainLabel, 3, 0);
controlLayout->addWidget(curtainCheckBox, 3, 1);
controlLayout->addWidget(modeLabel, 4, 0);
controlLayout->addWidget(modeComboBox, 4, 1);
controlLayout->addWidget(saveButton, 5, 0, 1, 2);
controlWidget->setLayout(controlLayout);
controlWidget->setVisible(false);
// 主窗口
QWidget *centralWidget = new QWidget();
QVBoxLayout *mainLayout = new QVBoxLayout();
mainLayout->addWidget(loginWidget);
mainLayout->addWidget(controlWidget);
centralWidget->setLayout(mainLayout);
setCentralWidget(centralWidget);
// 登录按钮点击事件
connect(loginButton, &QPushButton::clicked, [=]() {
QString username = usernameEdit->text();
QString password = passwordEdit->text();
if (username == "admin" && password == "admin") {
loginWidget->setVisible(false);
controlWidget->setVisible(true);
}
});
// 保存按钮点击事件
connect(saveButton, &QPushButton::clicked, [=]() {
bool lightChecked = lightCheckBox->isChecked();
bool acChecked = acCheckBox->isChecked();
bool humidifierChecked = humidifierCheckBox->isChecked();
bool curtainChecked = curtainCheckBox->isChecked();
QString mode = modeComboBox->currentText();
// 将状态信息传输到服务器
// ...
});
}
};
int main(int argc, char *argv[]) { QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <mysql/mysql.h>
#define SERVER "localhost" #define USER "root" #define PASSWORD "password" #define DATABASE "smart_home"
int main() { MYSQL *conn; MYSQL_RES *res; MYSQL_ROW row;
conn = mysql_init(NULL);
if (!mysql_real_connect(conn, SERVER, USER, PASSWORD, DATABASE, 0, NULL, 0)) {
fprintf(stderr, "%s\n", mysql_error(conn));
exit(1);
}
if (mysql_query(conn, "CREATE TABLE IF NOT EXISTS status ("
"id INT AUTO_INCREMENT PRIMARY KEY,"
"light BOOLEAN,"
"ac BOOLEAN,"
"humidifier BOOLEAN,"
"curtain BOOLEAN,"
"mode VARCHAR(255)"
")")) {
fprintf(stderr, "%s\n", mysql_error(conn));
exit(1);
}
// 接收客户端传输的状态信息并存储在数据库中
// ...
if (mysql_query(conn, "SELECT * FROM status")) {
fprintf(stderr, "%s\n", mysql_error(conn));
exit(1);
}
res = mysql_use_result(conn);
printf("Smart Home Status:\n");
while ((row = mysql_fetch_row(res)) != NULL) {
printf("ID: %s, Light: %s, AC: %s, Humidifier: %s, Curtain: %s, Mode: %s\n",
row[0], row[1], row[2], row[3], row[4], row[5]);
}
mysql_free_result(res);
mysql_close(conn);
return 0;
原文地址: https://www.cveoy.top/t/topic/p98w 著作权归作者所有。请勿转载和采集!