当前位置:网站首页>Qt est basé sur le système de gestion RFID (peut être appliqué à la plupart des systèmes de gestion RFID)
Qt est basé sur le système de gestion RFID (peut être appliqué à la plupart des systèmes de gestion RFID)
2022-06-29 01:05:00 【Plus simple que la physique】
Le système est composé de:QTCompiler,Peut être appliqué à la plupart desRFIDSystème de gestion,Réglage du port possible,Fonctions de base telles que la recherche d'articles dans le système d'entrée et de sortie!
Toutes les instructions et tous les paquets pour ce sujet ont été emballés!Accès privé requis!
Mise en œuvre du système:
Oui.RFIDIntroduction de la technologie dans le système de gestion des objets de valeur au comptoir,Lié à des marchandises précieuses au comptoirRFIDÉtiquettes,En combinaison avecRFIDL'équipement d'identification est utilisé pour surveiller、Contrôle et suivi des objets de valeur marqués,Réaliser un inventaire rapide、Suivi en temps réel et gestion intelligente des ventes..Ainsi, le processus d'entrée, de sortie et de vente des produits de valeur au comptoir est suivi et enregistré de façon exhaustive,Remplacer les modes de gestion manuelle et de numérisation des codes à barres fastidieux et inefficaces par de nouvelles méthodes automatisées, précises et efficaces.Et être capable de quitter le comptoir à courte distance(3~5M)Appelez la police.,Défaut d'obtenir l'autorisation,Détruire ou libérerRFIDAlarme de liaison de l'étiquette et des objets de valeur.
1. Conception du schéma général(Argument)
2. RFIDConception de la carte
(1) Technologie RFID;(2) Sélection des étiquettes électroniques.
3. RFIDConception du matériel de lecture et d'écriture
(1) MCU;(2) Module RF;(3) Antenne;(4) Interface de communication;(5) Interface homme - machine;(6) Circuit électrique.
4. RFIDConception de logiciels de lecture et d'écriture
(1) Initialisation du système;(2) Procédure de fonctionnement de la carte;(3) Programme LCD.
Programme de mise en oeuvre partielle:
widget.cpp:
#include <QDebug>
#include "views/widget.h"
#include "ui_widget.h"
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
QTextCodec *codec = QTextCodec::codecForName("utf8"); //GBK gbk
QTextCodec::setCodecForLocale(codec);
this->setWindowTitle(QString::fromLocal8Bit("Basé surRFID Le système de gestion des objets de valeur "));
setWidgetbackground(this,QPixmap(":/rcs/jjo.jpg")); //Interface principale
//setButtonbackground(ui->navButton,QPixmap(":/rcs/homeButton.png"));
setButtonbackground(ui->setButton,QPixmap(":/rcs/setButton.png")); setButtonbackground(ui->recordButton,QPixmap(":/rcs/widgetButton.png"));
_serialThread = new QThread(this);
_serialConnection = new SerialConnection();
navWidget = new homeForm(); //Interface de l'appareil
setDialog = new setting(); //Configurer l'interface
m_cAlarmRecord = new CAlarmRecord(); // Interface historique
//connect(ui->navButton,SIGNAL(clicked()),navWidget,SLOT(show()));
connect(ui->setButton,SIGNAL(clicked()),setDialog,SLOT(show())); connect(ui->recordButton,SIGNAL(clicked()),m_cAlarmRecord,SLOT(show()));
connect(navWidget,SIGNAL(Record_Signal(int,quint8)),m_cAlarmRecord,SLOT(AddRecord(int,quint8))); //Stockage des données historiques
connect(navWidget,SIGNAL(DispSensor1_Signal(QString)),this,SLOT(DispSensor1_Slot(QString))); //Affichage de l'interface principale
connect(navWidget,SIGNAL(DispSensor2_Signal(QString)),this,SLOT(DispSensor2_Slot(QString))); //Affichage de l'interface principale
connect(navWidget,SIGNAL(DispSensor3_Signal(QString)),this,SLOT(DispSensor3_Slot(QString))); //Affichage de l'interface principale
/*Connexion série*/
connect(_serialThread, SIGNAL(started()),_serialConnection, SLOT(readData()));
connect(_serialThread, SIGNAL(finished()), _serialConnection, SLOT(deleteLater()));
connect(_serialConnection,SIGNAL(sendnewdata(QByteArray)),navWidget,SLOT(RecvSensorData(QByteArray)));
connect(navWidget,SIGNAL(sensorCtrol(QByteArray)),_serialConnection,SLOT(SendCmdData(QByteArray)));
connect(_serialConnection,SIGNAL(connectionStateChanged(int)),setDialog,SLOT(DispConnectState_Slot(int)));
connect(setDialog,SIGNAL(StartUartDev_Signal(int)),_serialConnection,SLOT(openConnection(int)));
connect(setDialog,SIGNAL(CloseUartDev_Signal()),_serialConnection,SLOT(closeConnection()));
_serialConnection->moveToThread(_serialThread);
_serialThread->start();
/* Minuterie de mise à jour de l'état */
m_tmDate = new QTimer(this);
connect(m_tmDate,SIGNAL(timeout()),this, SLOT(DispDate_Slot()));
m_tmDate->start(1000); //1s
}
Widget::~Widget()
{
if (_serialThread)
{
if (_serialThread->isRunning())
{
_serialThread->quit();
_serialThread->wait();
}
delete _serialThread;
_serialThread = NULL;
}
delete ui;
}
// Définir l'arrière - plan du formulaire
void Widget::setWidgetbackground(QWidget *widget,QPixmap image)
{
QPalette palette;
palette.setBrush(backgroundRole(),QBrush(image));
widget->setPalette(palette);
}
// Définir l'arrière - plan du bouton
void Widget::setButtonbackground(QPushButton *button,QPixmap picturepath)
{
button->setFixedSize(picturepath.width(),picturepath.height());
button->setIcon(QIcon(picturepath));
button->setFlat(true); button->setIconSize(QSize(picturepath.width(),picturepath.height()));
button->setToolTip("");
}
void Widget::DispSensor1_Slot(QString _strValue)
{
ui->m_DispValue_1->setText(_strValue);
}
void Widget::DispSensor2_Slot(QString _strValue)
{
ui->m_DispValue_2->setText(_strValue);
}
void Widget::DispSensor3_Slot(QString _strValue)
{
ui->m_DispValue_3->setText(_strValue);
}
/*Afficher la date*/
void Widget::DispDate_Slot(void)
{
QDateTime dateTime(QDateTime::currentDateTime());
ui->m_DispDate->setText(dateTime.toString("yyyy-MM-dd hh:mm:ss ddd"));
}
Setting.cpp
#include "views/setting.h"
#include "ui_setting.h"
#include "views/widget.h"
setting::setting(QWidget *parent) :
QDialog(parent),
ui(new Ui::setting)
{
ui->setupUi(this);
QTextCodec *codec = QTextCodec::codecForName("utf8"); //GBK gbk
QTextCodec::setCodecForLocale(codec);
this->setWindowTitle(QString::fromLocal8Bit("Paramètres"));
this->setWindowOpacity(0.9); // L'arrière - plan et les éléments définissent l'effet de transparence
this->setModal(true); // Définir comme interface modale
}
setting::~setting()
{
delete ui;
}
void setting::on_m_ExeConnectUART_clicked()
{
int com;
com = ui->m_GetComPort->currentIndex();
if(ui->m_ExeConnectUART->text() == "Connexion")
{
emit StartUartDev_Signal(com); // Connexion du signal de port série
}
else
{
emit CloseUartDev_Signal(); // Déconnecter le signal du port série
ui->m_ExeConnectUART->setText(QString::fromLocal8Bit("Connexion"));
ui->m_DispComState->setText(QString::fromLocal8Bit("Déconnecter"));
}
}
void setting::DispConnectState_Slot(int state)
{
switch (state)
{
case 0: //Disconnected
ui->m_DispComState->setText(QString::fromLocal8Bit("Déconnecté"));
break;
case 1:
ui->m_DispComState->setText(QString::fromLocal8Bit("Connexion en cours"));
break;
case 2:
ui->m_ExeConnectUART->setText(QString::fromLocal8Bit("Déconnecter"));
ui->m_DispComState->setText(QString::fromLocal8Bit("Connexion réussie"));
break;
case 3:
ui->m_DispComState->setText(QString::fromLocal8Bit("La connexion a échoué"));
break;
default:
break;
}
}
int setting::updateDeviceList()
{
int count = ui->m_GetComPort->count();
while(ui->m_GetComPort->count())
{
ui->m_GetComPort->removeItem(0);
}
serial.findSerialDevices();
ui->m_GetComPort->addItems(serial.portsList());
qDebug() << count;
return count;
}
边栏推荐
- XML and other file contents in idea cannot be highlighted, and the file becomes gray
- What is the difference between the histology and western blotting 两种方法都是进行组织染色的
- 不同的子序列问题I
- 第七天 脚本与特效
- 同期群分析是什么?教你用 SQL 来搞定
- How to calculate the income tax of foreign-funded enterprises
- Jbridge bridging frame technology for AI computing power landing
- Bug risk level
- 滑环的基本结构及工作原理分析
- [gym 102423]-elven efficiency | thinking
猜你喜欢

Jbridge bridging frame technology for AI computing power landing

戴口罩人脸数据集和戴口罩人脸生成方法
![[leetcode] 522. Longest special sequence II violence + double pointer](/img/88/3ddeefaab7e29b8eeb412bb5c3e9b8.png)
[leetcode] 522. Longest special sequence II violence + double pointer

Large-scale case applications to developing post-click conversion rate estimation with MTL

Streaming media cluster application and configuration: how to deploy multiple easycvr on one server?

Cocoscrreator dynamically switches skeletondata to update bones
![[staff] pedal mark (step on pedal ped mark | release pedal * mark | corresponding pedal command in MIDI | continuous control signal | switch control signal)](/img/2b/e358b22d62ce6d683ed93418ff39fe.jpg)
[staff] pedal mark (step on pedal ped mark | release pedal * mark | corresponding pedal command in MIDI | continuous control signal | switch control signal)

盘点 6 月 yyds 的开源项目!

运营级智慧校园系统源码 智慧校园小程序源码+电子班牌+人脸识别系统

最新Justnews主题源码6.0.1开心版+社交问答插件2.3.1+附教程
随机推荐
What is contemporaneous group analysis? Teach you to use SQL to handle
be based on. NETCORE development blog project starblog - (13) add friendship link function
【图像增强】基于matlab人工多重曝光融合AMEF图像去雾【含Matlab源码 1916期】
UI highly adaptive modification scheme
Is the fund reliable and safe
[Architect (Part 38)] locally install the latest version of MySQL database developed by the server
请问基金是否靠谱,安全吗
Breadth first search to catch cattle
sql入门
【UVM】我的 main_phase 都跑完了,为啥 case 无法退出?太不讲道理!
Easycvr service private What should I do if the PEM file is emptied and cannot be started normally?
Redis常用命令手册
2022_ 2_ 16 the second day of learning C language_ Constant, variable
EasyCVR集群版本替换成老数据库造成的服务崩溃是什么原因?
[leetcode] 522. 最长特殊序列 II 暴力 + 双指针
[staff] accent mark, gradually stronger mark and gradually weaker mark
大型网站架构基础之笔记
Do280 allocating persistent storage
使用.Net驱动Jetson Nano的OLED显示屏
[MCU club] design of blind water cup based on MCU [simulation design]