【ಓಪನ್ ಸೋರ್ಸ್】T5L ಸ್ಮಾರ್ಟ್ ಸ್ಕ್ರೀನ್ ಆಧಾರಿತ ಫಿಂಗರ್ಪ್ರಿಂಟ್ ಗುರುತಿಸುವಿಕೆ ಪರಿಹಾರ
ಇಲ್ಲಿ ಒಂದು ಮುಕ್ತ-ಮೂಲ ಪ್ರಕರಣವನ್ನು ಪರಿಚಯಿಸಲಾಗಿದೆ ಡಿವಿನ್ ಡೆವಲಪರ್ ಫೋರಮ್ - T5L ಆಧಾರಿತ ಫಿಂಗರ್ಪ್ರಿಂಟ್ ಗುರುತಿನ ಪರಿಹಾರ.
ಈ ಪರಿಹಾರವು ಸ್ಮಾರ್ಟ್ ಸ್ಕ್ರೀನ್ನ ಸೀರಿಯಲ್ ಪೋರ್ಟ್ ಮೂಲಕ ಮಾಡ್ಬಸ್ ಸಂವಹನವನ್ನು ಆಧರಿಸಿದೆ, ಫಿಂಗರ್ಪ್ರಿಂಟ್ ಗುರುತಿನ ಮಾಡ್ಯೂಲ್ನ ನಿಖರವಾದ ನಿಯಂತ್ರಣವನ್ನು ಅರಿತುಕೊಳ್ಳುತ್ತದೆ ಮತ್ತು ಫಿಂಗರ್ಪ್ರಿಂಟ್ ನಮೂದು ಮತ್ತು ಗುರುತಿನ ಕಾರ್ಯಗಳನ್ನು ಸಂಯೋಜಿಸುತ್ತದೆ. ಇದು ಮಾಡಬಹುದು ಪ್ರವೇಶ ನಿಯಂತ್ರಣ ನಿರ್ವಹಣೆ, ಉದ್ಯೋಗಿ ಹಾಜರಾತಿ, ಬುದ್ಧಿವಂತ ಬಾಗಿಲು ಬೀಗಗಳು ಮತ್ತು ಇತರ ಸನ್ನಿವೇಶಗಳಿಗೆ ಬಳಸಬಹುದು, ಬಳಕೆದಾರರಿಗೆ ಹೆಚ್ಚು ಅನುಕೂಲಕರ ಮತ್ತು ಸುರಕ್ಷಿತ ಸಂವಹನ ಅನುಭವವನ್ನು ತರುತ್ತದೆ.
【GUI ವಿನ್ಯಾಸ】

【C51 ವಿನ್ಯಾಸ】
ಮಾಡ್ಬಸ್ ಸಂವಹನವನ್ನು ನಿರ್ವಹಿಸಲು ಪರದೆಯ ಕೋಡ್ನ ಒಂದು ಭಾಗವು ಈ ಕೆಳಗಿನಂತಿರುತ್ತದೆ:
ಇಂಟ್ ಮುಖ್ಯ (ಶೂನ್ಯ)
{(
INIT_CPU(); ()
ಟಿ2_ಹೀಟ್();
UART4_ಇನಿಟ್();
ಇಎ=1;
// UART4_SendStr("ಹಲೋ",sizeof("ಹಲೋ"));
WDT_ON();//ವಾಚ್ ಡಾಗ್ ತೆರೆಯಿರಿ
(1)
{(
WDT_RST();//ನಾಯಿಗೆ ಆಹಾರ ನೀಡಿ
ಪ್ರಕ್ರಿಯೆ ();
}
}
ಶೂನ್ಯ MainMachineHandle(ಶೂನ್ಯ)
{(
(UartDataHandle) ಆಗಿದ್ದರೆ
{(
ಯುಆರ್ಟ್ ಹ್ಯಾಂಡಲ್ (ಯುಆರ್ಟ್4_ಆರ್ಎಕ್ಸ್, ಯುಆರ್ಟ್4_ಆರ್ಎಕ್ಸ್_ಎಣಿಕೆ);
ಸಿಎಲ್ಆರ್_ಯುಆರ್ಟ್ಎಂಪಿ3();
}
}
bool uartHandle(u8 *Tdata,u8 len)
{(
u16ವ್ಲೆನ್=0;
u16CRC_1=0, ಬೇಗ್ಆಡ್ರ್=0;
u8 xdata ರೆಟ್ಡೇಟಾ[Uart4_Rx_Maxlen+10];
u8 ಎರ್ನಮ್=0;
CRC_1=CalcCrcAll(0xffff,Tdata,len-2);
if(CRC_1!= ((Tdata[len-1])
ತಪ್ಪು ಹಿಂತಿರುಗಿ;
// ಇದು ಬರೆಯುವ ಆಜ್ಞೆಯಾಗಿದೆ
(ಟಿಡೇಟಾ[0]==0&& ಟಿಡೇಟಾ[1]!=0x06) ಆಗಿದ್ದರೆ
{(
ತಪ್ಪು ಹಿಂತಿರುಗಿ;
}
elseif(Tdata[0]!=DevAddr) // ಸಾಧನ ವಿಳಾಸ
{(
ತಪ್ಪು ಹಿಂತಿರುಗಿ;
}
// ಇದು ಬರೆಯುವ ಆಜ್ಞೆಯಾಗಿದೆ
(ಟಿಡೇಟಾ[1]!=0x03&& ಟಿಡೇಟಾ[1]!=0x06 && ಟಿಡೇಟಾ[1]!=0x10 )
{(
ಸೆಂಡ್ಮಾಡ್ಬಸ್ಅಕ್ಇರ್ರ್(ಟಿಡೇಟಾ, 1);
ತಪ್ಪು ಹಿಂತಿರುಗಿ;
}
Wlen=(Tdata[4]
BegAddr=(Tdata[2]
(Tdata[1]==0x06)// ಮೆಮೊರಿಗೆ ಬರೆಯಿರಿ
{(
write_dgusii_vp(BegAddr,&Tdata[4],1);
}
ಇಲ್ಲದಿದ್ದರೆ(ಟಿಡೇಟಾ[1]==0x10)
{(
write_dgusii_vp(BegAddr,&Tdata[7],Wlen);
}
// ಕಾರ್ಯಾಚರಣೆಯ ಪ್ರತಿಕ್ರಿಯೆಯನ್ನು ಓದಿ
//[01][0x03][00][6B][00][02][CRC ಹೈ][CRC ಕಡಿಮೆ]
(ಟಿಡೇಟಾ[1]==0x03) ಆಗಿದ್ದರೆ
{(
ರೆಟ್ಡೇಟಾ[0]=ಟಿಡೇಟಾ[0];
ರೆಟ್ಡೇಟಾ[1]=0x03;
ರೆಟ್ಡೇಟಾ[2]=ವ್ಲೆನ್*2;
read_dgusii_vp(BegAddr,&RetData[3],Wlen);
CRC_1=ಕ್ಯಾಲ್ಕ್ಸಿಆರ್ಸಿಎಲ್(0xFFFF,ರೆಟ್ಡೇಟಾ,3+ವ್ಲೆನ್*2);
ರೆಟ್ಡೇಟಾ[ವ್ಲೆನ್*2+3]=CRC_1;
ರೆಟ್ಡೇಟಾ[ವ್ಲೆನ್*2+3+1]=CRC_1>8;
SendModbusAckOK(RetData,3+Wlen*2+2);
}
ಇಲ್ಲದಿದ್ದರೆ(ಟಿಡೇಟಾ[1]==0x10)
{(
ಮೆಮ್ಸಿಪಿ(ರೆಟ್ಡೇಟಾ, ಟಿಡೇಟಾ, 6);
CRC_1=ಕ್ಯಾಲ್ಕ್ಸಿಆರ್ಸಿಎಲ್(0xFFFF,(INT8U*)&ರೆಟ್ಡೇಟಾ,6);
ರೆಟ್ಡೇಟಾ[6]=CRC_1;
ರೆಟ್ಡೇಟಾ[7]=CRC_1>8;
ಸೆಂಡ್ಮಾಡ್ಬಸ್ಅಕ್ಒಕೆ(ರೆಟ್ಡೇಟಾ, 8);
}
elseif(Tdata[1]==0x06 && Tdata[0]) // ವಿಳಾಸ ಕೋಡ್ ನಿಜವಾಗಿದ್ದಾಗ ಉತ್ತರಿಸಿ
{(
ಮೆಮ್ಸಿಪಿ(ರೆಟ್ಡೇಟಾ, ಟಿಡೇಟಾ, 8);
ಸೆಂಡ್ಮಾಡ್ಬಸ್ಅಕ್ಒಕೆ(ರೆಟ್ಡೇಟಾ, 8);
}
ರಿಟರ್ನ್ ಟ್ರೂ;
}







