#include "information.h"
#include "ui_information.h"
information::information(QWidget *parent) :
QWidget(parent),
ui(new Ui::information)
{
ui->setupUi(this);
}
information::~information()
{
delete ui;
}
void information::on_pushButton_clicked()
{
hide();
}
void information::labelset(QString message){
ui->mylabel->setText(message);
}
#include "jinbu.h"
jinbu::jinbu()
{
unsigned char data;
int mem_fd;
unsigned char *cpld;
int flag=0;
int num[2]={2,0};
mem_fd = open("/dev/mem", O_RDWR);
cpld = (unsigned char*)mmap(NULL,(size_t)0x04,PROT_READ | PROT_WRITE |
PROT_EXEC,MAP_SHARED,mem_fd,(off_t)(0x8000000));
// if(cpld == MAP_FAILED)
while(flag<2)
{
data = num[flag];
flag++;
*(cpld+(0xe2<<1)) = data; //步进电机地址 0xe2<<1
break;
}
munmap(cpld,0x04);
close(mem_fd);
}
void changeStepperState(int * data){
int mem_fd;
unsigned char *cpld;
mem_fd = open("/dev/mem", O_RDWR);
cpld = (unsigned char*)mmap(NULL,(size_t)0x04,PROT_READ | PROT_WRITE |
PROT_EXEC,MAP_SHARED,mem_fd,(off_t)(0x8000000));
if(cpld ==MAP_FAILED)
return ;
if(*data==0){
*(cpld+(0xe2<<1))=0x00;
}else if(*data==2) {
*(cpld+(0xe2<<1))=0x02;
}
munmap(cpld,0x04);
close(mem_fd);
}
void changeParameter(int *data){
clock_t start_time=clock();
clock_t current_time=start_time;
while ((current_time-start_time)/CLOCKS_PER_SEC<10) {
current_time=clock();
}
*data=0;
}
#include "loginwindow.h"
#include "ui_loginwindow.h"
#include <QLineEdit>
#include"matrix.h"
#include <QMessageBox>
bool flag =false;
LoginWindow::LoginWindow(QWidget *parent) :
QWidget(parent),
ui(new Ui::LoginWindow)
{
ui->setupUi(this);
connect(ui->pushButton_enter,&QPushButton::clicked,this,&LoginWindow::on_pushButton_enter_clicked);
}
LoginWindow::~LoginWindow()
{
delete ui;
}
void LoginWindow::on_yhm_editingFinished(){
ui->mmtextedit->setFocus();
ui->yhmtextedit->setFocusPolicy(Qt::NoFocus);
ui->mmtextedit->setFocusPolicy(Qt::StrongFocus);
}
void LoginWindow::on_mm_editingFinished(){
ui->yhmtextedit->setFocus();
ui->mmtextedit->setFocusPolicy(Qt::NoFocus);
ui->yhmtextedit->setFocusPolicy(Qt::StrongFocus);
}
void LoginWindow::focusInEvent(QFocusEvent *event){
ui->mmtextedit->setFocus();
ui->yhmtextedit->setFocusPolicy(Qt::NoFocus);
ui->mmtextedit->setFocusPolicy(Qt::StrongFocus);
}
void LoginWindow::on_pushButton_clicked()
{
if(flag){
ui->mmtextedit->insert(ui->pushButton->text());
}
else {
ui->yhmtextedit->insert(ui->pushButton->text());
}
}
void LoginWindow::on_pushButton_2_clicked()
{
if(flag){
ui->mmtextedit->insert(ui->pushButton_2->text());
}
else {
ui->yhmtextedit->insert(ui->pushButton_2->text());
}
}
void LoginWindow::on_pushButton_3_clicked()
{
if(flag){
ui->mmtextedit->insert(ui->pushButton_3->text());
}
else {
ui->yhmtextedit->insert(ui->pushButton_3->text());
}
}
void LoginWindow::on_pushButton_4_clicked()
{
if(flag){
ui->mmtextedit->insert(ui->pushButton_4->text());
}
else {
ui->yhmtextedit->insert(ui->pushButton_4->text());
}
}
void LoginWindow::on_pushButton_5_clicked()
{
if(flag){
ui->mmtextedit->insert(ui->pushButton_5->text());
}
else {
ui->yhmtextedit->insert(ui->pushButton_5->text());
}
}
void LoginWindow::on_pushButton_6_clicked()
{
if(flag){
ui->mmtextedit->insert(ui->pushButton_6->text());
}
else {
ui->yhmtextedit->insert(ui->pushButton_6->text());
}
}
void LoginWindow::on_pushButton_7_clicked()
{
if(flag){
ui->mmtextedit->insert(ui->pushButton_7->text());
}
else {
ui->yhmtextedit->insert(ui->pushButton_7->text());
}
}
void LoginWindow::on_pushButton_8_clicked()
{
if(flag){
ui->mmtextedit->insert(ui->pushButton_8->text());
}
else {
ui->yhmtextedit->insert(ui->pushButton_8->text());
}
}
void LoginWindow::on_pushButton_9_clicked()
{
if(flag){
ui->mmtextedit->insert(ui->pushButton_9->text());
}
else {
ui->yhmtextedit->insert(ui->pushButton_9->text());
}
}
void LoginWindow::on_pushButton_0_clicked()
{
if(flag){
ui->mmtextedit->insert(ui->pushButton_10->text());
}
else {
ui->yhmtextedit->insert(ui->pushButton_10->text());
}
}
void LoginWindow::on_pushButton_x_clicked()
{
if(flag){
ui->mmtextedit->backspace();
}
else {
ui->yhmtextedit->backspace();
}
}
void LoginWindow::on_yhmtextedit_editingFinished()
{
flag=false;
}
void LoginWindow::on_mmtextedit_editingFinished()
{
flag=true;
}
void LoginWindow::on_pushButton_enter_clicked()
{
QString admin="123456";
QString mm="123456";
if(admin.compare(ui->yhmtextedit->text())==0&&mm.compare(ui->mmtextedit->text())==0){
if(!mainWindow){
mainWindow =new MainWindow(this);
//QPixmap pixmap(":/res/bgtp.jpg");
//QPalette palette;
//palette.setBrush(QPalette::Background,pixmap);
//x->setPalette(palette);
}
hide();
mainWindow->show();
//matrix();
}else {
QMessageBox::critical(nullptr,"错误","用户名或密码错误!");
}
}
void LoginWindow::on_pushButton_11_clicked()
{
close();
}
#include "mainwindow.h"
#include <QApplication>
#include <QWidget>
#include <QLabel>
#include "loginwindow.h"
#include "jinbu.h"
#include "matrix.h"
int main(int argc, char *argv[])
{
// pthread_t threa_id;
// int ret=pthread_create(&threa_id,NULL,matrix,NULL);
// if(ret!=0){
// printf("ERROR!!");
// exit(EXIT_FAILURE);
// }
QApplication a(argc, argv);
//MainWindow w;
// QLabel *labelbg =new QLabel;
// labelbg->setPixmap(pixmap);
// labelbg->setScaledContents(true);
// labelbg->setGeometry(0,0,w.width(),w.height());
// w.setStyleSheet("background-color:transparent;");
// pixmap =pixmap.scaled(pixmap.size(),Qt::IgnoreAspectRatio,Qt::SmoothTransformation);
//w.show();
LoginWindow q;
q.show();
// pthread_join(threa_id,NULL);
// matrix x;
return a.exec();
}
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "nfs.h"
#include "fnq.h"
#include <QString>
#include "matrix.h"
#include "jinbu.h"
#include "personnel_data.h"
#include <QMessageBox>
#include <QDateTime>
borrowBook the_great_gatsbly={1,"the_great_gatsbly","2023/6/5","2023/6/20"};
borrowBook to_kill_a_mockingbird={2,"to_kill_a_mockingbird","2023/6/4","2023/6/19"};
borrowBook book1984={3,"1984","2023/6/3","2023/6/18"};
borrowBook Pride_and_Prejudice={4,"Pride_and_Prejudice","2023/6/2","2023/6/17"};
borrowBook The_catcher_in_the_Rye={5,"The_catcher_in_the_Rye","2023/6/1","2023/6/16"};
Borrower person[3]={{0x12ac02d5,"杨雨",1,{the_great_gatsbly,The_catcher_in_the_Rye},false},
{0x40094f2f,"陈豪",1,{to_kill_a_mockingbird,book1984},false},
{0x75fb8a0f,"张三",2,{Pride_and_Prejudice},false}};
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::on_pushButton_clicked()
{
int i;
unsigned long uid1=nfc_card();
for( i=0;i<3;i++){
if(person[i].id==uid1){
if(person[i].rcflag==false){
person[i].rcflag=true;
QDateTime gettime=QDateTime::currentDateTime();
int len=sizeof(person[0].borrowbook)/sizeof(borrowBook);
QString gettimestring=gettime.toString();
QString message="<html>"
"<p>你好"+person[i].name+"</p>"
"<p>借书数量"+len+"</p>"
"<p>进入时间:"+gettimestring+"</p>"
"</html>";
// QMessageBox jrinformation;
// jrinformation.setText(message);
// QPushButton *okButton=jrinformation.addButton(QMessageBox::Ok);
// QObject::connect(okButton,&QPushButton::clicked,&jrinformation,&QMessageBox::done);
// jrinformation.exec();
// QMessageBox::information(this,"进入信息",message);
if(!infor){
infor=new information;
}
infor->labelset(message);
infor->show();
matrix mat;
int change=2;
int *fristdata=&change;
changeStepperState(fristdata);
changeParameter(fristdata);
changeStepperState(fristdata);
//jinbu y;
printf(""+person[i].rcflag);
return;
}
else if(person[i].rcflag==true){
person[i].rcflag=false;
QDateTime gettime1=QDateTime::currentDateTime();
QString quitmessage="<html>"
"<p>祝你在这段时间收获了</p>"
"<p>更好的自己!"+person[i].name+"</p>"
"<p>离开时间:"+gettime1.toString()+"</p>"
"</html>";
// QMessageBox quitinformation;
// quitinformation.setText(quitmessage);
// QPushButton *okButton=quitinformation.addButton(QMessageBox::Ok);
// QObject::connect(okButton,&QPushButton::clicked,&quitinformation,&QMessageBox::done);
// quitinformation.exec();
// QMessageBox::information(this,"离开信息",quitmessage);
if(!infor){
infor=new information;
}
infor->labelset(quitmessage);
infor->show();
//jinbu y;
int change=2;
int *fristdata=&change;
changeStepperState(fristdata);
changeParameter(fristdata);
changeStepperState(fristdata);
return;
}
}
}
fmq();
ui->label->setText("Unauthorized entry,please leave!");
}
void MainWindow::on_pushButton_2_clicked()
{
close();
}
#include "matrix.h"
matrix::matrix()
{
struct typFNT_GB16 GB_16[] = // 数据表
{
"",
0x00,0x80,0x00,0x80,0x10,0x80,0x10,0x80,0x10,0x80,0x10,0x80,0xFF,0xFF,0x10,0x80,
0x10,0x80,0x10,0x80,0x9F,0x84,0x40,0x82,0x20,0x84,0x00,0xF8,0x00,0x00,0x00,0x00,/*"书",0*/
" 恭 ",
0x10,0x44,0x25,0x48,0xC5,0x50,0x4F,0xFF,0x65,0x50,0x55,0x4C,0x40,0x40,0x50,0x80,
0x24,0xBF,0xCF,0xAA,0x44,0xAA,0x64,0xAA,0x5F,0xAA,0x44,0xBF,0x40,0x80,0x00,0x00,/*"籍",1*/
" 喜 ",
0x00,0x81,0x00,0x82,0x00,0x84,0xFE,0xB8,0x92,0x84,0x92,0x82,0x92,0x81,0x92,0xFF,
0x92,0x91,0x92,0x91,0x92,0x91,0xFE,0x91,0x00,0x91,0x00,0x81,0x00,0x81,0x00,0x00,/*"是",2*/
" 发 ",
0x00,0x01,0x00,0x02,0x00,0x04,0x00,0x08,0x00,0x30,0x00,0xC0,0x03,0x00,0xFC,0x00,
0x03,0x00,0x00,0xC0,0x00,0x30,0x00,0x08,0x00,0x04,0x00,0x02,0x00,0x01,0x00,0x00,/*"人",3*/
" 财 ",
0x00,0x21,0x08,0xA1,0x08,0xA2,0x49,0x22,0x2A,0x24,0x0C,0x28,0x08,0x30,0xFF,0x60,
0x08,0x30,0x0C,0x28,0x2A,0x24,0x49,0x22,0x08,0xA2,0x08,0x21,0x00,0x21,0x00,0x00,/*"类",4*/
"",
0x02,0x00,0x02,0x02,0x42,0x04,0x33,0xF8,0x00,0x04,0x01,0x02,0x11,0x0A,0x11,0x32,
0xFF,0xC2,0x11,0x02,0x11,0x02,0xFF,0xFA,0x11,0x02,0x11,0x02,0x01,0x02,0x00,0x00,/*"进",5*/
" 财 ",
0x02,0x01,0x02,0x09,0x02,0x11,0x3E,0x62,0x02,0x02,0x02,0x02,0x02,0x04,0xFF,0xF4,
0x22,0x08,0x22,0x08,0x22,0x10,0x22,0x20,0x22,0x40,0x02,0x00,0x02,0x00,0x00,0x00,/*"步",6*/
" 财 ",
0x00,0x00,0x1F,0xFE,0x30,0x84,0xD0,0x84,0x10,0x84,0x10,0x84,0x1F,0xFE,0x02,0x00,
0x0C,0x00,0xF1,0x00,0x10,0xC2,0x10,0x01,0x10,0x02,0x1F,0xFC,0x00,0x00,0x00,0x00,/*"的",7*/
" 财 ",
0x00,0x00,0x7F,0xFF,0x40,0x10,0x44,0x08,0x5B,0x10,0x60,0xE0,0x02,0x01,0x04,0x06,
0x09,0xF8,0x30,0x00,0xC0,0x00,0x30,0x00,0x09,0xFF,0x04,0x00,0x02,0x00,0x00,0x00,/*"阶",8*/
" 财 ",
0x08,0x20,0x08,0xC0,0x0B,0x00,0xFF,0xFF,0x09,0x00,0x08,0x82,0x00,0x04,0x93,0xC8,
0x72,0x50,0x12,0x60,0x1F,0xFF,0x32,0x40,0xD2,0x48,0x1E,0x44,0x00,0x78,0x00,0x00,/*"梯",9*/
};
int mem_fd,i,j,z,flag_m=0;
unsigned short *cpld;mem_fd = open("/dev/mem", O_RDWR);
cpld = (unsigned short*)mmap(NULL,(size_t)0x20,PROT_READ | PROT_WRITE |
PROT_EXEC,MAP_SHARED,mem_fd,(off_t)(0x8000000));
if(cpld == MAP_FAILED)
return;
while(flag_m<1)
{
for(z=0;z<sizeof(GB_16)/34;z++)
for(j=0;j<16;j++)
{
for(i=0;i<16;i++)
{
if(i < 16-j)
*(cpld+((0xc0+i)<<1)) = ((GB_16[z].Msk[(i+j)*2]<<8) +
(GB_16[z].Msk[(i+j)*2+1])); //数码管
else
*(cpld+((0xc0+i)<<1)) = ((GB_16[z+1].Msk[(i-(16-j))*2]<<8) +
(GB_16[z+1].Msk[(i-(16-j))*2+1])); //数码管
}
usleep(200000);
}
flag_m++;
}
munmap(cpld,0x20);
close(mem_fd);
}
#include "nfs.h"
unsigned char wakeup[] =
{0x55,0x55,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0xff,0x03,0xfd,0xd4,0x14,0x01,0x17,0x00}; //唤醒指令
unsigned char getUID[] = {0x00, 0x00, 0xFF, 0x04, 0xFC, 0xD4, 0x4A, 0x01, 0x00,
0xE1, 0x00}; //获取 UID
int com_init(speed_t speed)
{
struct termios options;
int COMDevice;
COMDevice = open(UARTDevice, O_RDWR | O_NOCTTY | O_NDELAY);// | O_NONBLOCK
if(COMDevice < 0)
{
printf("open com device failure");
}
tcgetattr(COMDevice,&options);
cfsetispeed(&options,speed);//波特率
cfsetospeed(&options,speed);
options.c_cflag |= (CLOCAL|CREAD);
options.c_cflag |= CS8;
options.c_lflag &= ~(ICANON | ECHO | ECHOE | ISIG);
options.c_oflag &= ~OPOST;
options.c_iflag &= ~(BRKINT | ICRNL | INPCK | ISTRIP | IXON);
options.c_cc[VTIME] = 0;//设置超时
options.c_cc[VMIN] = 1;//最少读 1 个数据
tcsetattr(COMDevice,TCSANOW,&options);
return COMDevice;
}
unsigned long nfc_card(){
unsigned char uartdata[25],c;
unsigned long uid;
int re,COMDevice;
COMDevice = com_init(B115200);
re = write(COMDevice,wakeup,sizeof(wakeup));
if(re>0)
printf("write ok\n");
else
printf("write error\n");
while(1)
{
re = read(COMDevice,&c,1);
if(re==1)
{
for(int i=0;i<24;i++){
uartdata[i]=uartdata[i+1];
}
uartdata[24] = c;
//=========================================================
printf("0x%x ",c);
if(uartdata[24-3] == 0xd5 && uartdata[24-2] == 0x15) // 唤醒指令返回值 D5 15 表示正确执行并完毕
{
printf("\n");
write(COMDevice,getUID,sizeof(getUID));
}
else if(uartdata[0]==0x00 && uartdata[1]==0x00 && uartdata[2]==0xFF
&& uartdata[3]==0x00 && uartdata[4]==0xff
&& uartdata[5]==0x00 && uartdata[6]==0x00 && uartdata[7] ==
0x00 && uartdata[8] == 0xFF && uartdata[12] == 0x4b && uartdata[18] == 0x04 &&
uartdata[24] == 0x00 )//UID 返回值
{
printf("\n\n");
uid = uartdata[19]<<24 | uartdata[20]<<16 | uartdata[21]<<8 |
uartdata[22];
printf("uid=0x%x\n",uid);
write(COMDevice,getUID,sizeof(getUID));
close(COMDevice);
return uid;
}
}
// return uid;
// break;
}
// close(COMDevice);
}
#include "personnel_data.h"
基于imx6的图书馆门禁系统代码
最新推荐文章于 2024-07-11 21:34:36 发布