精品国产Av无码久久久蜜臀-免费看a级淫秽真实动作衫视频-人妻无码一区二区三区免费视频-奶好大 好长 好紧免费视频

logo

【開源獲獎案例】基于T5L智能屏的指紋識別解決方案

——來自迪文開發(fā)者論壇

本期為大家推送迪文開發(fā)者論壇獲獎開源案例——基于T5L智能屏的指紋識別解決方案。該方案通過智能屏串口進(jìn)行Modbus通訊,實(shí)現(xiàn)對指紋識別模塊的精準(zhǔn)控制,并集成了指紋錄入與識別功能??捎糜陂T禁管理、員工考勤、智能門鎖等場景,為用戶帶來更為便捷、安全的交互體驗(yàn)。

    

【演示視頻】

    

完整開發(fā)資料含迪文屏DGUS工程資料與C51代碼,獲取方式:

1. 前往迪文開發(fā)者論壇獲取:http://inforum.dwin.com.cn:20080/forum.php?mod=viewthread&tid=10571&extra=page%3D1&_dsign=ea69763b

2. 微信公眾號中回復(fù)“指紋識別門鎖”獲取。


【UI素材展示】


12

34

【GUI工程設(shè)計(jì)】

GUI工程設(shè)計(jì)



C51工程設(shè)計(jì)

屏幕進(jìn)行modbus通訊的部分代碼如下:

 

int main(void)

{   

        INIT_CPU();

        T2_Init();

        UART4_Init();

        EA=1;

//     UART4_SendStr("hello",sizeof("hello"));

        WDT_ON();//打開開門狗

        while(1)

        {   

            WDT_RST();//喂狗

            Process();

        }

}

void MainMachineHandle(void)

{

        if(UartDataHandle)

        {

            uartHandle(Uart4_Rx,uart4_rx_count);

            CLR_UartMp3();

            }

}

bool uartHandle(u8 *Tdata,u8 len)

{

        u16Wlen=0;

        u16CRC_1=0,BegAddr=0;

        u8  xdata RetData[Uart4_Rx_Maxlen+10];

        u8  errnum=0;

        CRC_1=CalcCrcAll(0xffff,Tdata,len-2);

        if(CRC_1!= ((Tdata[len-1])<<8 | (Tdata[len-2])))

            returnfalse;

        //這個為寫指令

        if(Tdata[0]==0&& Tdata[1]!=0x06)

        {

            returnfalse;

        }

        elseif(Tdata[0]!=DevAddr) //設(shè)備地址

        {

            returnfalse;

        }

        //這個為寫指令

        if(Tdata[1]!=0x03&& Tdata[1]!=0x06 && Tdata[1]!=0x10 )

        {

            SendModbusAckErr(Tdata,1);

            returnfalse;

        }

        Wlen=(Tdata[4]<<8|Tdata[5]);           //長度

        BegAddr=(Tdata[2]<<8|Tdata[3]);       //開始地址

        if(Tdata[1]==0x06)//寫內(nèi)存

        {

            write_dgusii_vp(BegAddr,&Tdata[4],1);

        }

        elseif(Tdata[1]==0x10)

        {

            write_dgusii_vp(BegAddr,&Tdata[7],Wlen);

        }

        //讀操作響應(yīng)

        //[01][0x03][00][6B][00][02][CRC高][CRC低]

        if(Tdata[1]==0x03)

        {

            RetData[0]=Tdata[0];

            RetData[1]=0x03;

            RetData[2]=Wlen*2;

            read_dgusii_vp(BegAddr,&RetData[3],Wlen);

            CRC_1=CalcCrcAll(0xFFFF,RetData,3+Wlen*2);

            RetData[Wlen*2+3]=CRC_1;

            RetData[Wlen*2+3+1]=CRC_1>>8;

            SendModbusAckOK(RetData,3+Wlen*2+2);

        }

        elseif(Tdata[1]==0x10)

        {

            memcpy(RetData,Tdata,6);

             CRC_1=CalcCrcAll(0xFFFF,(INT8U*)&RetData,6);

            RetData[6]=CRC_1;

            RetData[7]=CRC_1>>8;

            SendModbusAckOK(RetData,8);

        }

        elseif(Tdata[1]==0x06 && Tdata[0]) //當(dāng)?shù)刂反a為真,才應(yīng)答

        {

            memcpy(RetData,Tdata,8);

            SendModbusAckOK(RetData,8);         

        }

        returntrue;

}