PDA

View Full Version : دسترسی به پورت USB در PHP



mehdi4467
پنج شنبه 26 تیر 1393, 22:47 عصر
سلام
من می خوام بدونم در PHP که روی لوکال نصب کرده ام چگونه می توان به پورت USB وصل شد و اطلاعات را خواند؟

ممنون

farzadyazdan
پنج شنبه 26 تیر 1393, 23:13 عصر
سلام
دلیل استفاده شما از این php برای استفاده از usb چی هست؟

ب اینکه روش متداول و استانداردی نیست ولی من یه کلاس پیدا کردم که شاید بدردتون بخوره

https://gist.github.com/ahutchings/51342

amg_123
پنج شنبه 26 تیر 1393, 23:15 عصر
...................Deleted.............

us1234
پنج شنبه 26 تیر 1393, 23:18 عصر
بهترین راه اینه که یک برنامه ( ویندوز سرویس ) واسط بنویسید و با API یا وب سرویس اطلاعات را منتقل کنید .

البته من هم خیلی دوست دارم بدونم هدفتون از اینکار چیه ؟
میخواهید اسکنر به پروژه تون اضافه کنید ؟ یا قفل سخت افزاری درست کنید ؟

mehdi4467
جمعه 27 تیر 1393, 00:48 صبح
سلام
ببینید من می خوام یک برنامه با PHP بنویسم که بتونم اطلاعاتی رو که روی پورت USB کامپیوترم میاد رو بگیرم و توی دیتابیس ذخیره کنم. به پورت USB کامپیوترم هم یک دستگاه USB که خودم ساختم وصله که اطلاعاتی رو به کامپیوتر می فرسته.

amirrezaq
جمعه 27 تیر 1393, 00:49 صبح
بهترین راه اینه که یک برنامه ( ویندوز سرویس ) واسط بنویسید و با API یا وب سرویس اطلاعات را منتقل کنید .

البته من هم خیلی دوست دارم بدونم هدفتون از اینکار چیه ؟
میخواهید اسکنر به پروژه تون اضافه کنید ؟ یا قفل سخت افزاری درست کنید ؟

شما چقدر فکرتون خوبه...
من که فکرم منفیه فکر کردم میخواند اطلاعات کاربر رو کش برند!!!
البته ببخشیدا فکر من زیاد پرسه میزنه:لبخند:

Unique
جمعه 27 تیر 1393, 01:35 صبح
اگه فرض کنیم دارین از ویندوز استفاده میکنید.
اگه بتونین یک activex پیدا کنین که بتونه از روی پورت usb اطلاعات را بخونه اونوقت با php هم میتونید این ار را بکنید ! اما میدونین چیه ! php که از روی وب سرور اجرا میشه مهمولا برای همیشه نمیتونه در حال اجرا باشه و حتی اگه timeout را هم صفر کنین خود آپاچی احتمالا process را terminate میکنه. میشه کمی بیشتر توضیح بدین ؟ از طریق usb چه اطلاعاتی ارسال میشه و در چه زمانی ارسال میشه ؟ اصلا چرا مخیواین با php اطلاعات را بخونین ؟ اگه میخواین بخونین و بریزین توی database با net. یا دلفی که یا حتی vb6 که خیلی راحت تر میشه این کار را کرد !

کلا درخواست شما برای وب نامعقوله واگه درست و درمون توضیح بدین میتونم بیشتر راهنماییتون کنم.

mehdi4467
جمعه 27 تیر 1393, 01:59 صبح
سلام
برای توضیح بیشتر عرض می کنم فرض کنید ما می خواهیم یک قفل سخت افزاری بسازیم که به یوزر بدیم و ایشون وصل کنه با رایانه اش.
حال فرد وقتی وارد وب سایت ما میشه می تونه از اطلاعاتش استفاده کنه ولی اگر قفل رو وصل نکرده باشه نتونه از اطلاعات سایت استفاده کنه.

Unique
جمعه 27 تیر 1393, 12:12 عصر
دوستمون توضیحاتی دادند اما اصلا امکان دریافت اطلاعات از usb به واسطه مرورگر از طریق javascript وجود نداره ولی با java applet و activex میشه این کار را کرد اما کاربر باید حتما باید اجرای activex یا applet را تایید کنه. این کار شما هیچ ربطی به قابلیت خوندن اطلاعات از usb port بواسطه php نداره.

مهرداد سیف زاده
جمعه 27 تیر 1393, 12:34 عصر
در این جا لارم دونستم تا یکی از کارهایی رو که انجام دادم توضیح بدم
مرورگر اختصاصی؟
فایرفاکس و مرورگر کروم کدش موجوده و میتونید بگیرید و برنامه سمت کاربری رو به سرورتون وصل کنید البته دانش بالایی میخواد
ولی راه حل دیگر استفاده از cef هست. در واقع اسمش فریم ورک کروم بصورت توکار هست. شما به کمک این فریم ورک میتونید یک مرورگر اختصاصی برای خودتون بنویسید
در کاری که انجام دادم بکارگیری cefpython بود. که همون هسته cef رو با رابط python در اختیارتون قرار میده. البته باید باید در پایتون دستی داشته باشید و بتونید با wxpython و لود یک dll کار کنید.
از امکانات این cefpython اینه که چیزی به اسم jsBinding داره. شما میتونید از طریق هسته مرورگر که داره روی کامپیوتر کاربر اجرا میشه با سرور حرف بزنید. چطور به صورت زیر:
1- مرورگر در لحظه اجرا پورت usb رو میخونه اگر توکن شما وصل بود اطلاعات رو میگیره و کد میکنه توی خودش در یک متغیر سراسری به اسم token نگه میداره البته کاربر اگر سورس صفحه رو ببینه این مقدار رو نمیبینه و فقط توی حافظه مرورگر هست
2- برنامه سرور به کمک javascript این متغیر رو میگیره. مثلا کاربر روی دکمه لاگین کلیک کرد شما window.token رو صدا میزنید و مرورگر چون توی حافظش این متغیر وجود داره اون رو در اختیارتون قرار میده

البته بر عکس هم وجود داره که اسم تابعش jsCallBack هست که شما یه تابع جاوا اسکریپت مینویسید و مثلا به مرورگر میگید برو پورت usb رو اسکن کن ببین اگر توکن وصل بود اطلاع بود بگیر و ارسال کن برای سرور.

اگر نیاز به کسی داشتید که بتونه پایتون بنویسه و cef رو راه بندازه با من تماس بگیرید
https://code.google.com/p/cefpython/

Unique
جمعه 27 تیر 1393, 17:36 عصر
مرورگر اختصاصی؟
فایرفاکس و مرورگر کروم کدش موجوده و میتونید بگیرید و برنامه سمت کاربری رو به سرورتون وصل کنید البته دانش بالایی میخواد
ولی راه حل دیگر استفاده از cef هست. در واقع اسمش فریم ورک کروم بصورت توکار هست. شما به کمک این فریم ورک میتونید یک مرورگر اختصاصی برای خودتون بنویسید
در کاری که انجام دادم بکارگیری cefpython بود. که همون هسته cef رو با رابط python در اختیارتون قرار میده. البته باید باید در پایتون دستی داشته باشید و بتونید با wxpython و لود یک dll کار کنید.
از امکانات این cefpython اینه که چیزی به اسم jsBinding داره. شما میتونید از طریق هسته مرورگر که داره روی کامپیوتر کاربر اجرا میشه با سرور حرف بزنید. چطور به صورت زیر:
1- مرورگر در لحظه اجرا پورت usb رو میخونه اگر توکن شما وصل بود اطلاعات رو میگیره و کد میکنه توی خودش در یک متغیر سراسری به اسم token نگه میداره البته کاربر اگر سورس صفحه رو ببینه این مقدار رو نمیبینه و فقط توی حافظه مرورگر هست
2- برنامه سرور به کمک javascript این متغیر رو میگیره. مثلا کاربر روی دکمه لاگین کلیک کرد شما window.token رو صدا میزنید و مرورگر چون توی حافظش این متغیر وجود داره اون رو در اختیارتون قرار میده

البته بر عکس هم وجود داره که اسم تابعش jsCallBack هست که شما یه تابع جاوا اسکریپت مینویسید و مثلا به مرورگر میگید برو پورت usb رو اسکن کن ببین اگر توکن وصل بود اطلاع بود بگیر و ارسال کن برای سرور.

موضوع جالبی بود ولی من متوجه نمیشم چرا پیشنهاد دادین ! شما کلا میگی بیا یک مرورگر برای برنامتون بنویسین (البته لازم نیست بنویسین و کدش و امکانتاش آماده هست) و از این framework استفاده کنین تا بتونین با سیستم عامل ارتباط بگیرین. پس کاربر نیاز داره که مرورگر شما را دانلود و استفاده کنه ! این خیلی جالب نیست وقتی میشه با java applet این کار را بر روی هر مرورگری انجام داد !

مهرداد سیف زاده
جمعه 27 تیر 1393, 17:53 عصر
بله با اپلت میشه منم اول خواستم با اپلت کارمو پیش ببرم ولی اپلت تا حدودی دسترسی داره ولی مرورگر کلا روی os کاربر هست. همچنین اپلت نیاز به نصب و فعال سازی و توی بعضی از تست هام درست کار نمیکرد یا توی دسترسی حتما کاربر باید اجازه دسترسی میداد. ولی وقتی مرورگر میسازید کلا روی os کاربر حضور دارید و آزادید که هر مانوری بدید
البته کد آماده منظورتون رو نفهمیدم. شاید منظورم سورس مرورگرها هست. که اونم نیاز به دانش و همچنین مراحل زیاد برای دریافت و کامپایل داشت. بعد بحث فناوری های وب هم هست شما اگه کروم یا فایرفاکس نشخه خاصی رو کامپایل کنید چند روز دیگه که فناوری های وب تغییر میکنه مجبورید دوباره کامپایل بگیرید تازه شاید یه عالمه توابع و چیزای دیگه تغییر کنه که کد قبلی شما نتونه روی سورس مرورگر نسخه خاصی کامپایل بشه. ولی این فریم ورک کلا یه dll هست که هر دفعه بسته به نسخه کروم بروز رسانی میشه
خیلی از شرکت ها مثل adobe از این سکو توی نرم افزارهاشون استفاده میکنن.

us1234
جمعه 27 تیر 1393, 22:29 عصر
سلام
برای توضیح بیشتر عرض می کنم فرض کنید ما می خواهیم یک قفل سخت افزاری بسازیم که به یوزر بدیم و ایشون وصل کنه با رایانه اش.
حال فرد وقتی وارد وب سایت ما میشه می تونه از اطلاعاتش استفاده کنه ولی اگر قفل رو وصل نکرده باشه نتونه از اطلاعات سایت استفاده کنه.

قفل سخت افزاری برای تحت وب معنا نداره ! ( درسته بنده به اشتباه در پست های قبلی ذکر کرده بودم )
ولی یکم معقول باشیم سرور دست شماست به هر کسی دوست دارید یوزر پسورد بدید وقتی دلتون خواست یوزر پسوردش را غیر فعال کنید ( یا هر کار دیگه )
چه لزومی داره همچین روشی برای محدود سازی استفاده کنید ؟
اگر فقط سخت افزار برای شما اهمیت داره ( یعنی سایت فقط روی سیستم x قابل باز کردن باشه ) خیلی ساده تر از ساخت مرورگر میشه این کار را انجام داد .
به این صورت :
یه برنامه ساده با سی شارپ می نویسید که وقتی اجرا میشه کد مثل کد هارد یا سی پی یو سیستم را کد میکنه و نمایش میده ، کاربر هربار برای لاگین کردن باید از اون نرم افزار کد جدید دریافت کنه ( یه چیز تو مایه رمزیاب ها بانکی میشه ولی به یه شکل دیگه )
و شما اون کد را بررسی میکنید اگر مثلا کد ثبت شده بود اجازه لاگین کردن به کاربر بدید.
در کل فکر میکنم از اپلت و ساخت مرورگر عملی تر باشه .:متفکر: