基于imx6的图书馆门禁系统代码

#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"

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值