PDA

View Full Version : دستگاه حضور و غیاب iface 202



negar442
دوشنبه 02 اسفند 1395, 15:30 عصر
سلام به همگی؛

من یک دستگاه حضور و غیاب دارم که اونو به کامپیوتر وصل میکنم. این دستگاه یک CD داره که توس فایلهای DLL در فولدر SDK موجوده. توی این دستگاه اطلاعاتی رو ذخیره کردم. مثلا کاربری رو ذخیره کردم.

سوال من اینه که الان میخوام این اطلاعات رو بخونم و در برنامم نمایش بدم. برای اینکار هیچ سمپلی در اختیار ندارم. یک توضیح کلی میدین که اطلاعات داخل دستگاه کجا ذخیره میشه و چه جوری میشه بهش دسترسی داشت؟

این دستگاه iface 202 شرکت دنیای پردازشه. آیا میشه تو سایتهای خارجی به سمپلش رسید و دانلود کرد؟

negar442
دوشنبه 02 اسفند 1395, 18:55 عصر
دوستان اگه با هر کدوم از این مدل دستگاهها کار کردند، خوشحال میشم اگه راهنماییم کنند.

محمد آشتیانی
دوشنبه 02 اسفند 1395, 23:25 عصر
سلام
بهترین راه اینه که با شرکت دنیای پردازش تماس بگیرید و ازشون درخواست برنامه sample بکنید.
معمولا همچین چیزهایی رو دارند.

negar442
دوشنبه 02 اسفند 1395, 23:53 عصر
تماس گرفتم . گفتند از همونجا که خریدی باید بپرسی.
اونجایی که خرید کردیم هم فعلا گوشی رو جواب نمیدن!

ولی این که کلیت ماجرا چیه رو اونهایی که با دستگاههی دیگه کار کردند هم میتونن جواب بدن. این که من از چه فایلی باید اطلاعات رو بخونم؟

negar442
سه شنبه 03 اسفند 1395, 21:22 عصر
اگه من بخوام جدول sql server رو به دستگاه وصل کنم ، کلیت ماجرا چه جوریه؟

محمد آشتیانی
چهارشنبه 04 اسفند 1395, 08:40 صبح
سلام
کلیتی وجود نداره ، چون استانداردی وجود نداره ، شرکت های تولید کننده دستگاه حضور و غیاب هرکدوم مکانیزم خاص خودشون رو برای ارتباط با دستگاهشون دارن ، بنابراین دادن یک نسخه کلی بی معنیه.
باز هم تاکید میکنم ، جزئیات مورد نظرتون رو به طریقی باید از شرکت مربوطه بپرسید.

* بنده ندیدم که دستگاه رو مستقیم به اسکیوال سرور وصل کنن ، شما اطلاعات دستگاه رو باید در برنامه خودت بگیری (رکوردهای ترددی که روی دستگاه ثبت شده) ، پردازش لازم رو روش انجام بدی و بعد اگر نیاز داشتی توی بانک اطلاعاتی ذخیره کنی

negar442
چهارشنبه 04 اسفند 1395, 10:46 صبح
این دستگاه به lan وصله. IP این دستگاه رو از کجا به دست بیارم؟

rahmatipoor
چهارشنبه 04 اسفند 1395, 13:40 عصر
توی منوی خود دستگاه معمولا یه جایی باید باشه که تنظیمات شبکه از جمله آی پی و غیره رو انجام بدی

negar442
چهارشنبه 04 اسفند 1395, 14:24 عصر
من ای پی سیستم خودمو توی اون دستگاه ست کردم. آیا الان برای اینکه بتونم اطلاعات رو از دستگاه بخونم نیاز به آی پی خود دستگاه ندارم؟ آیا اصلا لزومی داره که آی پی دستگاه رو داشته باشم؟

یعنی تصوری که من دارم اینه که آی پی دستگاه رو تو برناممون میگیریم برای ایجاد اتصال بین دستگاه و کامپیوتر. بعد با توجه به dll ها اطلاعات موجود که روی دستگاه وجود داره رو میخونیم و یا ارسال میکنیم.

پی نوشت: من آدرس مک رو توی تنظیمات دستگاه دارم ولی ip رو ندارم.

اگه یه نفر راهنماییم کنه که چه جوری ip دستگاه رو بتونم بگیرم واقعا ممنون میشم.

علی فتحی
شنبه 07 اسفند 1395, 19:25 عصر
سلام مها هم از شرکت افق فراویژن استفاده میکنیم داخل تنظیمات دستگاه کل اطلاعات برای اتصال وجود داره . ولی در کل بنده اطلاعات را از دستگاه با فلش مموری انتقال میدم. خواستی تصویری برات میفرستم. م.فق باشی

ali_md110
شنبه 07 اسفند 1395, 21:35 عصر
https://www.codeproject.com/Articles/1104538/Csharp-ZKTeco-Biometric-Device-Getting-Started
روش استفاده از دستگاههای zk اینه که باید اسمبلی اونو بایداز طریق regsver32
رجیستر بکنید
فراموش نکنید

negar442
سه شنبه 10 اسفند 1395, 17:15 عصر
الان من با متد SSR_GetGeneralLogData رکوردهای مربوط به تردد رو میخونم ولی این متد از اول همه رکوردها رو میخونه تا آخر! من میخوام از یک رکورد خاص بخونه و هر دفعه از اول کل رکوردها رو نخونه.
متدهای دیگه رو هم من گشتم ولی چیزی پیدا نکردم.
آیا این مساله راه حلی هم داره؟

ali_md110
سه شنبه 10 اسفند 1395, 20:50 عصر
public ICollection<MachineInfo> GetLogData(ZkemClient objZkeeper, int machineNumber)
{
string dwEnrollNumber1 = "";
int dwVerifyMode = 0;
int dwInOutMode = 0;
int dwYear = 0;
int dwMonth = 0;
int dwDay = 0;
int dwHour = 0;
int dwMinute = 0;
int dwSecond = 0;
int dwWorkCode = 0;

ICollection<MachineInfo> lstEnrollData = new List<MachineInfo>();

objZkeeper.ReadAllGLogData(machineNumber);

while (objZkeeper.SSR_GetGeneralLogData(machineNumber, out dwEnrollNumber1, out dwVerifyMode, out dwInOutMode, out dwYear, out dwMonth, out dwDay, out dwHour, out dwMinute, out dwSecond, ref dwWorkCode))


{
string inputDate = new DateTime(dwYear, dwMonth, dwDay, dwHour, dwMinute, dwSecond).ToString();

MachineInfo objInfo = new MachineInfo();
objInfo.MachineNumber = machineNumber;
objInfo.IndRegID = int.Parse(dwEnrollNumber1);
objInfo.DateTimeRecord = inputDate;

lstEnrollData.Add(objInfo);
}

return lstEnrollData;
}


این یک لیست جنریک هست که تک تک رکورد به اون اضافه میشه ولی چیزی از اول تا اخر جستجو نمیزنه
اگر متدی دیگه هست خودتون کدهاشو بزارید من که ندیدم

ذر ضمن شما میتونید متد دلخواهتون بنوییسید چون sdk دستگاه رو دارید و نیاز به کپی کردن کدهای این مثال هم نیست
این مثال فقط یک راهنمایی هست

negar442
سه شنبه 10 اسفند 1395, 22:12 عصر
تو همین کدی که شما گذاشتید و در خط
while (objZkeeper.SSR_GetGeneralLogData تمام رکوردهای موجود در دستگاه خونده میشن و این حلقه تا زمانی که رکوردی برای خوندن موجود باشه ادامه پیدا میکنه. یعنی اگه 2000 تا رکورد وجود داشته باشه این حلقه 2000 بار تکرار میشه. حالا من اگه بخوام فقط 10 تا رکورد آخر رو بخونم باز هم این حلقه از اول شروع میکنه به خوندن تا به 10 تای آخر برسه در حالی که من میخوام حلقه از 1990 شروع بشه تا 2000.

ali_md110
چهارشنبه 11 اسفند 1395, 12:50 عصر
این متد رو ویرایش کنید و حلقه while رو ورداریدش خودتون دستبکار بشید یک متد چدید بنویسید
شما میتونید یک لیست جنزیک بنویسید و یک بار تمام رکوردها رو بازیابی کنید و توی حافظه نگهش دارید مثلا میتونید بصورت استاتیک حالا بهمراه Lazy هم باشه ک بهتر
و هروقت نیاز به بازیابی 10 رکورد آخر دارید با اجرای OrderBy و where عبارات لامبدا روی اون لیست جنریک رکوردهاتون بدست بیارید

negar442
چهارشنبه 11 اسفند 1395, 18:15 عصر
این متد رو ویرایش کنید و حلقه while رو ورداریدش خودتون دستبکار بشید یک متد چدید بنویسید
شما میتونید یک لیست جنزیک بنویسید و یک بار تمام رکوردها رو بازیابی کنید و توی حافظه نگهش دارید مثلا میتونید بصورت استاتیک حالا بهمراه Lazy هم باشه ک بهتر
و هروقت نیاز به بازیابی 10 رکورد آخر دارید با اجرای OrderBy و where عبارات لامبدا روی اون لیست جنریک رکوردهاتون بدست بیارید


منظور من این نیست.
حرف شما درسته به شرطی که من یک بار اطلاعات رو همون اول بخونم و توی لیست قرار بدم،
در حالی که هر لحظه ممکنه یک ورود یا خروج در دستگاه ثبت بشه و من مجبورم چک کنم که رکورد جدیدی وارد شده یا نه که باز هم باید همون دستور while رو انجام بدم .


تا اونجایی که من فهمیدم دستگاهها رو جوری درست کردن که اطلاعات فقط به شکل ترتیبی قابل دستیابیه!

ali_md110
چهارشنبه 11 اسفند 1395, 19:47 عصر
این دستگاهها با اینتر فیس LAN و پورتهای دنیگه قابل دسترسی هستند و به سرور متصل میشن وقتی فردی وارد و خارج شد دستگاه sync میکنه و اطلاعات رو توی بانک که معمولا sql server هست ذخیره میکنه و نیازی نیست جهت چک کردن اشخاص توی بانک خود دستگاه جستجو زد میتونید توی اسکیول سرور جستجو بزنید

negar442
جمعه 13 اسفند 1395, 10:06 صبح
فکر نمیکنم که راهی برای ارتباط مستقیم دستگاه با اسکیول سرور وجود داشته باشه.

ali_md110
جمعه 13 اسفند 1395, 12:43 عصر
حتمن هست چون واسط ارتباطی داره
من با بعضی از این دستگاهها کار کردم مثل Nitgen و Suprema و Futronic همه اونها قابلیت لینک با برنامه و اسکیول سرور دارند به راحتی اطلاعات از سمت دستگاه به سرور ارسال و دریافت میشه
همین zk هم داره