تبلیغات :
آکوستیک ، فوم شانه تخم مرغی، صداگیر ماینر ، یونولیت
دستگاه جوجه کشی حرفه ای
فروش آنلاین لباس کودک
خرید فالوور ایرانی
خرید فالوور اینستاگرام
خرید ممبر تلگرام

[ + افزودن آگهی متنی جدید ]




صفحه 1 از 7 12345 ... آخرآخر
نمايش نتايج 1 به 10 از 65

نام تاپيک: چطور میتونم یک کلید فشاری را به کامپیوتر وصل کنم؟

  1. #1
    داره خودمونی میشه
    تاريخ عضويت
    Apr 2005
    پست ها
    134

    پيش فرض چطور میتونم یک کلید فشاری را به کامپیوتر وصل کنم؟

    سلام
    برای قسمتی از پروژه ام باید یه رله یا کلید فشاری را به کامپیوتر وصل کنم.
    وقتی کلید فشرده میشه ( on میشه ) کامپیوتر تشخیص بده و دستوری که براش تعریف میکنم را اجرا کنه.
    لطفا در این مورد راهمایی کنید

  2. #2
    آخر فروم باز Mehran NZ's Avatar
    تاريخ عضويت
    Sep 2006
    پست ها
    2,208

    پيش فرض

    خوب زبانتون و مشخص کنید تا دوستان بتونن کمکتون کنن

  3. #3
    داره خودمونی میشه
    تاريخ عضويت
    Apr 2005
    پست ها
    134

    پيش فرض

    زبان برنامه برام مهم نیست
    من برای قسمتی از پروژه ام نیاز دارم که یه کلید فشاری یا رله به کامپیوتر وصل کنم و هر وقت کلید فشرده شد کامپیوتر از طریق وبکم عکس بگیره و save کنه
    لطفا کمک کنید

  4. #4
    ناظر انجمن .NET Framework _H2_'s Avatar
    تاريخ عضويت
    Feb 2007
    محل سكونت
    یک جایی بین Framework و نارمک!
    پست ها
    4,746

    پيش فرض

    سلام
    راحت ترین راه برای ارتباط وسایل و ابزار به رایانه برای پروژه های کوچک استفاده از پورت LPT یا همان پورت پیرنتر یا همان درگاه سنترونیکس است.

    این درگاه شامل خروجی و ورودی است که بسیار راحت میتوان آن را از داخل برنامه کنترلر کرد.
    ترتیب و شماره پین ها را باید ببینم و برایتان بنویسم ولی شماره پورتش تا جایی که یادم است (اولین شماره) 0x0378H است، جزییات پین ها را انشا ا... اگر یادم باشد تا شنبه در می آورم و برایتان میگذارم.

  5. #5
    ناظر انجمن .NET Framework _H2_'s Avatar
    تاريخ عضويت
    Feb 2007
    محل سكونت
    یک جایی بین Framework و نارمک!
    پست ها
    4,746

    پيش فرض

    اطلاعات تک تک پایه های کانکتور sub-D25 مربوط به درگاه LPT1 :
    پین ها :
    01 - STROB - Address: 0x37A.0 - I/O
    02 - D0 - Address: 0x378.0 - OUT
    03 - D1 - Address: 0x378.1 - OUT
    04 - D2 - Address: 0x378.2 - OUT
    05 - D3 - Address: 0x378.3 - OUT
    06 - D4 - Address: 0x378.4 - OUT
    07 - D5 - Address: 0x378.5 - OUT
    08 - D6 - Address: 0x378.6 - OUT
    09 - D7 - Address: 0x378.7 - OUT
    10 - ACK - Address: 0x379.6 - INP
    11 - BUSY - Address: 0x379.7 - INP
    12 - PE - Address: 0x379.5 - INP
    13 - SELECT - Address: 0x379.4 - INP
    14 - AUTO FEED - Address: 0x37A.1 - I/O
    15 - ERROR-NC - Address: 0x379.3 - INP
    16 - INT - Address: 0x37A.2 - I/O
    17 - SEL IN - Address: 0x37A.3 - I/O
    18 ~ 25 - GND = زمین = صفر ولت

    همانطور که از لیست فوق مشخص است در گاه LPT1 شامل سه پورت مجزا برای آدرس دهی است (LPT2 در صورت وجود شماره x278 را دارد)
    - پورت اول با آدرس x378 صرفاً خروجی است، پین های این درگاه توانایی ارائه جریان 2.6mA و تحمل پیک 24mA را دارند.
    - پورت دوم با آدرس x379 صرفاً ورودی است، بیتهای 0 و 1 و 2 این درگاه در دسترس نیستند.
    - پورت سوم با آدرس x37A میتواند به عنوان ورودی یا خروجی استفاده شود و نیبل بالارتبه آن در دسترس نیست و نباید استفاده شود، خروجی های این پورت توانایی ارائه جریان 7mA را دارد، برون ده این پورت برای سطح منطقی 1 معمولاً کم است و گاهاً بایک مقاومت بالابرنده ولتاژ تأمین میشود.

    استاندارد رعایت شده در سطوح ولتاژ این درگاه ها طبق استاندارد TTL است.

    برای دسترسی به پورت ها در زبان های مختلف راههای نسبتاً مشابه ای وجود دارد.
    در کدهای زیر عدد 123 به درگاه x378 فرستاده میشود (D0~D7)
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    البته شنیده ام که کد ++C فوق، در XP جواب نمیدهد.
    برای VB.Net و #C هم نیاز به دانلود یک DLL اضافی دارید.

    در مورد اتصال کلید نکته کوچک دیگری هم وجود دارد و آن نواسانات ناشی از اتصال و قطع کلید است.
    بعد از فشار کلید حدود 20mS طول میکشد تا اتصال تثبیت شود و خروجی ثابت گردد (و نیز زمان قطع) در نتیجه مثلاً اگر با نرم افزار شمارنده ای ساخته باشید که تعداد دفعات فشار کلید را بشمارد و به نکته فوق دقت نکرده باشید امکان دارد با هر بار فشار کلید شمارنده 20 یا حتی 30 مورد فشار داده شدن کلید را بشمارد!!!! پس دقت کنید. کلید بعد از فشار شما سریع و قطعی وصل نمیشود و حدود 20mS مدام قطع و وصل میشود تا بالاخره پایدار میشود.

    برای رفع مشکل فوق در برنامه باید از یک وقفه زمانی استفاده کرد و به محض دریافت اولین تغییر وضعیت، برنامه 20ms صبر کند و اگر هنوز وضعیت درست بود آنوقت اقدام به کاری کند، البته میتوانید از یک فیلتر پایین گذر ساده در کلید استفاده کنید، مثلاً با یک خازن 1uF تا 10uF احتمالاً مشکل حل میشود و اگر از مقاوتی هم استفاده شود که واقعاً عالی میشود و واقعاً فیلتر پایین گذر ساده ای خواهیم داشت که نواسانات اضافی را حذف میکند.

    ضمناً در حالت ساده شده نباید طول سیم بین کلید و رایانه زیاد باشد، زیاد شدن طول سیم اثرات مخربی بر کارکرد درست دارد، (افزایش مقاومت، افزایش ظرفیت خازنی، ناپایداری امپدانس و افزایش پارازیت و هوم و...) که در صورت نیاز باید یا مقاومت بالابرده ولتاژ (کاهش امپدانس = تثبیت خط) و یا در حالت پیشرفته با ترانزیستورها یا تقویت کننده های عملیاتی وضعیت انتقال را بهبود بخشید.

    در مورد خروجی هم (در صورت نیاز) حواستان باشد اتصال کوتاه رخ ندهد یا بیشتر از آمپرهای بیان شده از آنها جریان نکشید و گرنه به رایانه تان صدمه میزند! برون ده خروجی ها در سطح صفر منطقی بالاتر است، پس همیشه از صفر به عنوان روشن کننده خروجی استفاده کنید، اگر هم به جریان قوی تری نیاز دارید میتوانید از یک ترانزیستور معمولی PNP (مثلاً BC557) به همراه یک مقاوت بیس استفاده کنید و اگر باز هم جریان بالاتری میخواهید میتوانید از دو ترانزیستور دوقطبی یا یک دارلینگتون (مثل BD140) استفاده کنید و باز اگر جریان قوی تری و ولتاژ بالاتری در حد خاموش و روشن وسایل برقی نیاز دارید میتوانید از یک رله در خروجی استفاده کنید و به راحتی وسایل 220 ولت پرقدرت را هم کنترل کنید.

    اگر کمک بیشتری میخواهید، دقیق تر توضیح دهید که چه کاری میخواهید انجام دهید و نیز زودتر زبان برنامه نویسی تان را مشخص کنید، من نمی گویم VB.Net چپ است و راست است (!) و هیچی مثل آن نمیشود و... ولی در صورت انتخاب VB.Net یا حداقل #C من راهنمایی بیشتری میتوانم به شما بکنم.
    موفق باشید.

  6. این کاربر از _H2_ بخاطر این مطلب مفید تشکر کرده است


  7. #6
    ناظر انجمن .NET Framework _H2_'s Avatar
    تاريخ عضويت
    Feb 2007
    محل سكونت
    یک جایی بین Framework و نارمک!
    پست ها
    4,746

    پيش فرض

    سلام مجدد!
    آقا میبخشید حواسم زیادی جمع است!!!
    [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]

  8. این کاربر از _H2_ بخاطر این مطلب مفید تشکر کرده است


  9. #7
    در آغاز فعالیت gol-e-golab's Avatar
    تاريخ عضويت
    May 2007
    پست ها
    6

    پيش فرض کمک در مورد پورتها

    اطلاعات تک تک پایه های کانکتور sub-D25 مربوط به درگاه LPT1 :
    پین ها :
    01 - STROB - Address: 0x37A.0 - I/O
    02 - D0 - Address: 0x378.0 - OUT
    03 - D1 - Address: 0x378.1 - OUT
    04 - D2 - Address: 0x378.2 - OUT
    05 - D3 - Address: 0x378.3 - OUT
    06 - D4 - Address: 0x378.4 - OUT
    07 - D5 - Address: 0x378.5 - OUT
    08 - D6 - Address: 0x378.6 - OUT
    09 - D7 - Address: 0x378.7 - OUT
    10 - ACK - Address: 0x379.6 - INP
    11 - BUSY - Address: 0x379.7 - INP
    12 - PE - Address: 0x379.5 - INP
    13 - SELECT - Address: 0x379.4 - INP
    14 - AUTO FEED - Address: 0x37A.1 - I/O
    15 - ERROR-NC - Address: 0x379.3 - INP
    16 - INT - Address: 0x37A.2 - I/O
    17 - SEL IN - Address: 0x37A.3 - I/O
    18 ~ 25 - GND = زمین = صفر ولت

    همانطور که از لیست فوق مشخص است در گاه LPT1 شامل سه پورت مجزا برای آدرس دهی است (LPT2 در صورت وجود شماره x278 را دارد)
    - پورت اول با آدرس x378 صرفاً خروجی است، پین های این درگاه توانایی ارائه جریان 2.6mA و تحمل پیک 24mA را دارند.
    - پورت دوم با آدرس x379 صرفاً ورودی است، بیتهای 0 و 1 و 2 این درگاه در دسترس نیستند.
    - پورت سوم با آدرس x37A میتواند به عنوان ورودی یا خروجی استفاده شود و نیبل بالارتبه آن در دسترس نیست و نباید استفاده شود، خروجی های این پورت توانایی ارائه جریان 7mA را دارد، برون ده این پورت برای سطح منطقی 1 معمولاً کم است و گاهاً بایک مقاومت بالابرنده ولتاژ تأمین میشود.

    استاندارد رعایت شده در سطوح ولتاژ این درگاه ها طبق استاندارد TTL است.

    برای دسترسی به پورت ها در زبان های مختلف راههای نسبتاً مشابه ای وجود دارد.
    در کدهای زیر عدد 123 به درگاه x378 فرستاده میشود (D0~D7)
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    البته شنیده ام که کد ++C فوق، در XP جواب نمیدهد.
    برای VB.Net و #C هم نیاز به دانلود یک DLL اضافی دارید.

    در مورد اتصال کلید نکته کوچک دیگری هم وجود دارد و آن نواسانات ناشی از اتصال و قطع کلید است.
    بعد از فشار کلید حدود 20mS طول میکشد تا اتصال تثبیت شود و خروجی ثابت گردد (و نیز زمان قطع) در نتیجه مثلاً اگر با نرم افزار شمارنده ای ساخته باشید که تعداد دفعات فشار کلید را بشمارد و به نکته فوق دقت نکرده باشید امکان دارد با هر بار فشار کلید شمارنده 20 یا حتی 30 مورد فشار داده شدن کلید را بشمارد!!!! پس دقت کنید. کلید بعد از فشار شما سریع و قطعی وصل نمیشود و حدود 20mS مدام قطع و وصل میشود تا بالاخره پایدار میشود.

    برای رفع مشکل فوق در برنامه باید از یک وقفه زمانی استفاده کرد و به محض دریافت اولین تغییر وضعیت، برنامه 20ms صبر کند و اگر هنوز وضعیت درست بود آنوقت اقدام به کاری کند، البته میتوانید از یک فیلتر پایین گذر ساده در کلید استفاده کنید، مثلاً با یک خازن 1uF تا 10uF احتمالاً مشکل حل میشود و اگر از مقاوتی هم استفاده شود که واقعاً عالی میشود و واقعاً فیلتر پایین گذر ساده ای خواهیم داشت که نواسانات اضافی را حذف میکند.

    ضمناً در حالت ساده شده نباید طول سیم بین کلید و رایانه زیاد باشد، زیاد شدن طول سیم اثرات مخربی بر کارکرد درست دارد، (افزایش مقاومت، افزایش ظرفیت خازنی، ناپایداری امپدانس و افزایش پارازیت و هوم و...) که در صورت نیاز باید یا مقاومت بالابرده ولتاژ (کاهش امپدانس = تثبیت خط) و یا در حالت پیشرفته با ترانزیستورها یا تقویت کننده های عملیاتی وضعیت انتقال را بهبود بخشید.

    در مورد خروجی هم (در صورت نیاز) حواستان باشد اتصال کوتاه رخ ندهد یا بیشتر از آمپرهای بیان شده از آنها جریان نکشید و گرنه به رایانه تان صدمه میزند! برون ده خروجی ها در سطح صفر منطقی بالاتر است، پس همیشه از صفر به عنوان روشن کننده خروجی استفاده کنید، اگر هم به جریان قوی تری نیاز دارید میتوانید از یک ترانزیستور معمولی PNP (مثلاً BC557) به همراه یک مقاوت بیس استفاده کنید و اگر باز هم جریان بالاتری میخواهید میتوانید از دو ترانزیستور دوقطبی یا یک دارلینگتون (مثل BD140) استفاده کنید و باز اگر جریان قوی تری و ولتاژ بالاتری در حد خاموش و روشن وسایل برقی نیاز دارید میتوانید از یک رله در خروجی استفاده کنید و به راحتی وسایل 220 ولت پرقدرت را هم کنترل کنید.

    اگر کمک بیشتری میخواهید، دقیق تر توضیح دهید که چه کاری میخواهید انجام دهید و نیز زودتر زبان برنامه نویسی تان را مشخص کنید، من نمی گویم VB.Net چپ است و راست است (!) و هیچی مثل آن نمیشود و... ولی در صورت انتخاب VB.Net یا حداقل #C من راهنمایی بیشتری میتوانم به شما بکنم.
    موفق باشید.

    با سلام خدمت دوست عزیز
    لطفا در مورد پین ها و دستوراتی که نوشته اید توضیح بیشتری بدهید
    ذر ضمن آخرین خط کدی که نوشتید در ویژوال بیسیک 6 جواب نداد و ارور میده

  10. #8
    در آغاز فعالیت gol-e-golab's Avatar
    تاريخ عضويت
    May 2007
    پست ها
    6

    پيش فرض

    ببخشید
    درضمن فایل Dll شما به صورت حروف ماشین دیده می شود!!!!

  11. #9
    در آغاز فعالیت gol-e-golab's Avatar
    تاريخ عضويت
    May 2007
    پست ها
    6

    پيش فرض

    ببخشید
    درضمن فایل Dll شما به صورت حروف ماشین دیده می شود!!!!!!!

  12. #10
    ناظر انجمن .NET Framework _H2_'s Avatar
    تاريخ عضويت
    Feb 2007
    محل سكونت
    یک جایی بین Framework و نارمک!
    پست ها
    4,746

    پيش فرض

    سلام
    اون دستور برای VB8 بود نه VB6 ! و حتماً باید فایل مذکور (Port.dll) در System32 کپی شده باشد (البته بعد از پایان طراحی برنامه و ارائه نسخه EXE بودن DLL فوق در کنار EXE کفایت میکند)

    در مورد دانلود هم میبخشید، در حال طراحی سایتی جدید در یک با فضای وب یک میزبان خوش نام هستنم، ایمیل دهید فایل را ایمیل کنم.

    در مورد توضیح هم چشم! متن جدیدی حاضر میکنم و با جزییات بیشتر طریقه اتصال کلید و LED را میگویم.

صفحه 1 از 7 12345 ... آخرآخر

Thread Information

Users Browsing this Thread

هم اکنون 1 کاربر در حال مشاهده این تاپیک میباشد. (0 کاربر عضو شده و 1 مهمان)

User Tag List

قوانين ايجاد تاپيک در انجمن

  • شما نمی توانید تاپیک ایحاد کنید
  • شما نمی توانید پاسخی ارسال کنید
  • شما نمی توانید فایل پیوست کنید
  • شما نمی توانید پاسخ خود را ویرایش کنید
  •