/**************************************************************************************************************************** * FunctionName:SetUDataToDat * Parameters In:PIN,SmsID * Parameters Out:DataBuf * Return Value:void * Device Used:For both Black&White and TFT screen devices. udata.dat * Function:To convert imported parameters to the byte array * Auther:Darcy * Date:Oct.23, 2009 *****************************************************************************************************************************/ public void SetUDataToDat(out byte[] DataBuf, int PIN, int SmsID) { DataBuf = new byte[4]; UData udata = new UData(); udata.PIN = (ushort)PIN; udata.SmsID = (ushort)SmsID; Array.Copy(Raw.RawSerialize(udata), DataBuf, 4); }
/**************************************************************************************************************************** * FunctionName:GetTemplateFromDat * Parameters In:DataBuf * Parameters Out:Size,PIN,FingerID,Valid,Template * Return Value:void * Device Used:template.dat in both Black&White and TFT screen devices using 9.0 arithmetic * Function:To parse the bytes arrays from template.dat according to the class Template and get out the independent parameters * Explanation:To parse according to the max finger templage 602bytes * Auther:Darcy * Date:Oct.23, 2009 *****************************************************************************************************************************/ public void GetTemplateFromDat(byte[] DataBuf, out int Size, out int PIN, out int FingerID, out int Valid, out string Template) { byte[] TemplateBuf = new byte[602]; Templates9 tmp = new Templates9(); tmp = (Templates9)Raw.RawDeserialize(DataBuf, typeof(Templates9)); Size = tmp.Size; PIN = tmp.PIN; FingerID = tmp.FingerID; Valid = tmp.Valid; Array.Copy(DataBuf, 6, TemplateBuf, 0, 602); Template = BitConverter.ToString(TemplateBuf).Replace("-", ""); //Str to Hex }
/**************************************************************************************************************************** * FunctionName:GetSSRSMSFromDat * Parameters In:DataBuf * Parameters Out:Tag,ID,ValidMinutes,Reserved,StartTime,Content * Return Value:void * Device Used:Just for TFT screen devices.sms.dat * Function:To parse the short messages byte array to independent parameters * Auther:Darcy * Date:Oct.23, 2009 *****************************************************************************************************************************/ public void GetSSRSMSFromDat(byte[] DataBuf, out int Tag, out int ID, out int ValidMinutes, out int Reserved, out string StartTime, out string Content) { byte[] ContentBuf = new byte[UDisk.MAX_SSR_SMS_CONTENT_SIZE * 2 + 1]; SSR_SMS sms = new SSR_SMS(); sms = (SSR_SMS)Raw.RawDeserialize(DataBuf, typeof(SSR_SMS)); Tag = sms.Tag; ID = sms.ID; ValidMinutes = sms.ValidMinutes; Reserved = sms.Reserved; //decode time from uint value type to string value type int Time = (int)sms.StartTime; int Year, Month, Day, Hour, Minute, Second; Second = Time % 60; Time /= 60; Minute = Time % 60; Time /= 60; Hour = Time % 24; Time /= 24; Day = Time % 31 + 1; Time /= 31; Month = Time % 12 + 1; Time /= 12; Year = Time + 2000; DateTime dt; try { dt = new DateTime((int)Year, (int)Month, (int)Day, (int)Hour, (int)Minute, (int)Second); } catch (Exception e) { dt = new DateTime(1970, 1, 1, 1, 1, 1); //MessageBox.Show(e.ToString(), "Error"); Console.WriteLine(e.ToString(), "Error"); } StartTime = dt.ToString(); Array.Copy(DataBuf, 11, ContentBuf, 0, UDisk.MAX_SSR_SMS_CONTENT_SIZE * 2 + 1); Content = System.Text.Encoding.Default.GetString(ContentBuf); }
/**************************************************************************************************************************** * FunctionName:SetSSRUserInfoToDat * Parameters In:PIN,Privilege,Password,Name,Card,Group,TimeZones(string),PIN2(string) * Parameters Out:DataBuf * Return Value:void * Device Used:user.dat in TFT screen Device * Function:To convert the independent parameters to bytes arrays DataBuf according to the class SSR_User * Auther:Darcy * Date:Oct.23, 2009 *****************************************************************************************************************************/ public void SetSSRUserInfoToDat(out byte[] DataBuf, int PIN, int Privilege, string Password, string Name, int Card, int Group, string TimeZones, string PIN2) { DataBuf = new byte[72]; byte[] PasswordBuf = new byte[8]; byte[] NameBuf = new byte[24]; byte[] CardBuf = new byte[4]; byte[] TimeZonesBuf = new byte[8]; byte[] PIN2Buf = new byte[24]; SSR_User ssruser = new SSR_User(); ssruser.PIN = (ushort)PIN; ssruser.Privilege = (byte)Privilege; PasswordBuf = System.Text.Encoding.Default.GetBytes(Password); Array.Copy(PasswordBuf, ssruser.Password, 8); NameBuf = System.Text.Encoding.Default.GetBytes(Name); Array.Copy(NameBuf, ssruser.Name, 24); CardBuf = BitConverter.GetBytes(Card); Array.Copy(CardBuf, ssruser.Card, 4); ssruser.Group = (byte)Group; TimeZonesBuf = System.Text.Encoding.Default.GetBytes(TimeZones); ssruser.TimeZones[0] = (ushort)TimeZonesBuf[0]; //whether to use timezones or not (0 stands for yes,1 stands for defining by yourself) ssruser.TimeZones[1] = (ushort)TimeZonesBuf[1]; //(if you use the timezones)timezoune1 ssruser.TimeZones[2] = (ushort)TimeZonesBuf[2]; //timezone2 ssruser.TimeZones[3] = (ushort)TimeZonesBuf[3]; //timezone3 PIN2Buf = System.Text.Encoding.Default.GetBytes(PIN2); Array.Copy(PIN2Buf, ssruser.PIN2, 24); Array.Copy(Raw.RawSerialize(ssruser), DataBuf, 72); }