مشاهده دست آورد نظرسنجی: مباحث این تاپیک ادامه داشته باشد و در صورت ادامه کدام ی

رای دهنده
3. شما نمی توانید در این رای گیری رای بدهید
  • پایان فعالیت تاپیک

    0 0%
  • ادامه بحث با پورت موازی

    1 33.33%
  • ادامه بحث با پورت سریال

    2 66.67%
صفحه 1 از 3 123 آخرآخر
نمایش نتایج 1 تا 40 از 85

نام تاپیک: آموزش ارتباط با سخت افزار

  1. #1
    کاربر دائمی آواتار alireza643
    تاریخ عضویت
    شهریور 1384
    محل زندگی
    روی زمین
    پست
    368

    Lightbulb آموزش ارتباط با سخت افزار

    ارتباط بین نرم افزار و سخت افزار یکی از کارهای بسیار دوست داشتی و پر کاربرد در صنعت امروز دنیاست. ولی این کار از یک مهندس نرم افزار یا یک مهندس سخت افزار و الکترونیک به تنهایی ساخته نیست بلکه مجموعه ای از هر دو تخصص رو طلب میکنه. ولی این مطلب فقط در مورد کار های صنعتی و بزرگ صدق میکنه نه درباره کارهای کوچیک و تجربه های شخصی (البته همین کارهای کوچیک هستن که پایه گذار یک تخصص میشن). پس تکلیف کسانی که دوست دارن تو خونه برای تجربه خودشون یه برنامه جمع و جور بنویسن چی میشه. باید چی کار کنن؟
    سوالات زیر تیتر خیلی از تاپیک هایی هست که تو این چند سالی که سایت داره فعالیت میکنه زده شدن.
    چطوری میشه با کامپیوتر یک LED رو روشن کرد؟
    کنترل سخت افزار به کمک کامپیوتر
    چگونگی برقراری ارتباط بین کامپیوتر و دستگاه های جانبی
    بعضی ها به نتیجه رسیده و بعضی ها هم نه بعضی هم از نظر نرم افزار به نیجه رسیده ولی به خاطر عدم آشنایی کامل با پورت و سخت افزار باعث صدمه دیدن پورت یا دستگاه جانبی شده.
    مطالب بالا دلیل این بود که من به این نتیجه برسم که شاید بد نباشه یه بخش آموزش ارتباط با سخت افزار هر چند مختصر تو سایت داشته باشیم.
    میدونم مطالب کامل نیست و خیلی جاها شاید مشکل داره ولی این بخش حاصل تجربیات شخصی خود من هست و سعی میکنم در حد امکان و توانایی خودم مطالب مهم تو برنامه نویسی، ساخت بخش سخت افزاری و نکات مهم پورتی که برای اون برنامه مینویسیم رو در اختیار دوستان قرار بدم امیدوارم دوستان و اساتید مشکلات و کمبود های کار بنده رو به من تذکر بدن.
    یه خواهشی هم دارم اینه که اگر درباره هرکدوم از برنامه ها یا مدارات سوالی داشتید به من پیغام خصوصی بدید تا جواب اون رو در بخش پرسش و پاسخ مربوط به همون برنامه قرار بدم و این طوری از به هم ریختگی تاپیک جلوگیری بشه و دوستان هم راحت تر از مطالب استفاده کنن.
    برای شروع و انجام این برنامه ها به امکانات زیر نیاز داریم
    1- کامپیوتر شخصی
    2- کامپایلر C++‎ (خودم از borland استفاده میکنم ولی برنامه ها محدودیتی تو کامپایلر ندارن)
    3-PortTalk
    4- تعدادی مقاومت
    5- منبع تغذیه 5 ولتی یا باطری
    موارد ذکر شده قسمت های اصلی و مورد نیاز بود ولی برای ادامه پروژه ها یک سری امکانات دیگه هم هست که برای راحتی کار و بعضی جاها محافظت از خودتون و کامپیوتر نیاز دارید ولی بدون اون ها هم میشه کار رو انجام داد. یک سری امکانات هم هست که برای دیدن نتایج کار لازم و ضروری هست ولی نه برای کل پروژه ها بلکه برای یک یا چند پروژه خاص که اون ها رو هم در زیر نوشتم:
    1- کابل پرینتر
    2- بردبورد
    3- مقداری سیم نازک
    4- ترانزیستور
    5- گیره سوسماری
    مواردی که برای تست برنامه نیاز داریم:
    1- LED
    2- LCD
    3- StepMotor

    متشکرم.
    موفق باشید.

  2. #2
    کاربر دائمی آواتار alireza643
    تاریخ عضویت
    شهریور 1384
    محل زندگی
    روی زمین
    پست
    368

    Talking PortTalk چیست؟

    در سیستم عامل های قدیمی شما به راحتی میتوانستید اطلاعات خود را به پورت ارسال کنید یا از آن اطلاعات را بخوانید اما در سیستم عامل های جدید این امکان از کاربر و برنامه نویس گرفته شده و دیگر به راحتی نمیتوان اطلاعات را بین برنامه و پورت ها انتقال داد.
    برای این کار راه حل هایی وجود دارد مثل استفاده از برنامه ها و یا DLL هایی که شرکت های فعال در این زمینه در اختیار برنامه نویسان قرار میدهند از بین برنامه های مختلفی که برای این کار وجود دارد میتوان به PortTalk و از بین DLL ها به WinIO.dll اشاره کرد.
    ما در این تاپیک ابتدا روش کار با PortTalk را توضیح میدهیم و در ادامه به توضیح WinIO میپردازیم.
    برنامه PortTalk شامل 4 فایل اصلی میباشد. 1- PortTalk.reg ، 2- PortTalk.sys، 3- PortTalk_IOCTL.h و 4- pt_ioctl.c
    برای استفاده از امکانات این برنامه به روش زیر باید عمل کرد
    ابتدا فایل PortTalk.sys در /system32/drivers کپی کرده و سپس PortTalk.reg را اجرا کنید. بعد از این کار سیستم را restart کنید. بعد از بوت شدن کامپیوتر شما برای کار با این برنامه آماده است. برای کار فایل های PortTalk_IOCTL.h و pt_ioctl.c را کنار برنامه خود کپی کنید و از آنها استفاده نمایید. این برنامه 4 تابع در اختیار شما قرار میدهد که به کمک آنها میتوانید با پورت ارتباط برقرار کنید.
    OpenPortTalk(): برای برقراری ارتباط با پورت
    ClosePortTalk(): برای اتمام ارتباط با پورت
    InP(): برای خواند از پورت
    OutP(): برای نوشتن در پورت
    توضیحات تکمیلی و شرح کامل کار کردن با این برنامه رو به زمان نوشتن برنامه ها موکول میکنم. از اونجایی که این برنامه کپی رایت نداده و قرار دادنش روی سایت بر خلاف مقررات نیست به همراه این پست یک نسخه از برنامه PortTalk وجود داره که میتونید از اون استفاده کنید.
    فایل های ضمیمه فایل های ضمیمه

  3. #3
    کاربر دائمی آواتار alireza643
    تاریخ عضویت
    شهریور 1384
    محل زندگی
    روی زمین
    پست
    368

    Thumbs up پورت موازی

    یکی از ساده ترین و پرکاربرد ترین پورت های کامپیوتر پورت موازی هست.این پورت دارای 25 پایه هست و پشت همه کامپیوتر ها میشه اون رو دید.
    مزایای این پورت به اندازه ای هست که اون رو یکی از پورت های پر کاربرد کرده. در زیر لیست یکسری از مزایای این پورت آورده شده.
    1-نیاز به رمز گشایی و پروتکل خاصی برای انتقال اطلاعات نداره.
    2-برای همه کامپیوترها در دسترسه
    3-برای تمام پایه های این پورت امکان برنامه ریزی وجود داره
    4-سرعت این پورت از پورت سری بیشتره
    اما در مقابل این خوبی ها ضعف هایی هم داره که عبارتند از:
    1-برد کم
    2-هزینه ی بالا برای انتقال اطلاعات
    3-دشواری در پیدا کردن خطا هایی که موقع انتقال اطلاعات به وجود میاد
    حالا که مزایا و معایب این پورت رو فهمیدیم باید برای اون برنامه نویسی کنیم. برای تبادل اطلاعات بین هر قسمتی از کامپیوتر نیاز به آدرس اون قسمت داریم. برای دسترسی به آدرس پورت موازی تو سیستم عامل ویندوز به روش زیر عمل میکنیم
    روی MyComputer راست کلیک میکنیم و از او Property میگیریم به تب Hardware میریم و از اونجا گزینه ی Device Manager را انتخاب میکنیم. از زیر مجموعه ی Ports روی LPT کلیک میکنیم به تب Resources میریم و اونجا میشه آدرس پورت رو پیدا کرد این آدرس معمولا در همه کامپیوترها یکسان و 378 میباشد.
    پورت موازی از نظر نرم افزاری به سه بایت تقسیم بندی میشه که به هر کدوم از این بایت ها رجیستر هم گفته میشه که آدرسی که در قسمت بالا پیدا کردیم آدرس اولین بایت بود. برای 2 بایت دیگه هم عدد یک رو به آدرس به دست اومده اضافه میکنیم.
    اولین بایت از این سه بایت به رجیستر دیتا معروفه و از اون برای ارسال و دریافت اطلاعات استفاده میشه.به این بایت میشه از طریق پایه های 2 تا 9 درسترسی داشت.
    بایت بعدی با نام وضعیت شناخته میشه یک بایت ورودی هست که از اون برای دریافت وضعیت دستگاه جانبی استفاده میشه. برای دسترسی به بیت های این قسمت از پایه های 15،13،12،11و 10 استفاده میشه.
    و آخریت قسمت با نام کنترل شناخته میشه و از اون برای کنترل پورت استفاده میشه و به صورت خروجی میشه از این قسمت استفاده کرد. برای دسترسی به این پورت از پایه های 1،14،16و 17 استفاده میشه.
    همونطور که مشاهده کردید اولا تو دو قسمت آخری به همه بایت ها از نظر سخت افزاری دسترسی وجود نداره و فقط با برنامه میشه اون رو کنترل کرد. و ثانیا پایه هایی که وجود داره کل پایه های پورت موازی رو پوشش نمیده. بقیه ی پایه های باقی مونده برای گراند استفاده میشن که دو طول پروژه بیشتر با این قسمت آشنا میشیم.
    نکته ی دیگری که میشه به اون اشاره کرد ورودی یا خروجی بودن بایت دیتا هست. این بایت به صورت پیش فرض خروجی در نظر گرفته شده ولی با ارسال عدد 1 با بیت 5 از بایت کنترل میتونیم این بایت رو به صورت ورودی استفاده کنیم.
    با توجه به نکات بالا میشه فهمید که ما در آن واحد میتونیم 12 پایه خروجی و 5 وروری یا 13 ورودی و 4 خروجی داشته باشیم.
    برای کار کردن با این پورت به نکات زیر باید توجه کرد:
    برد این پورت حداکثر 3 متر میباشد و به ازای هر بیتی که انتقال میدهیم 1 سیم داریم و 1 سیم گراند هم برای کل مدار نیاز داریم.پایه های این پورت مقاومت داخلی 470 اهمی دارند که در طراحی مدار باید در نظر گرفته شوند.

  4. #4
    کاربر دائمی آواتار alireza643
    تاریخ عضویت
    شهریور 1384
    محل زندگی
    روی زمین
    پست
    368

    روشن کردن LED

    بعد از اینکه PortTalk رو نصب کردیم نوبت میرسه به نوشتن برنامه. برنامه زیر خیلی ساده هست ولی برای شروع کار شاید خوب باشه.

    #include <windows.h>
    #include <pt_ioctl.c>
    int main()
    {
    OpenPortTalk();
    for(int i = 0; i < 10; i++)
    {
    outportb(0x378, 0x01);
    Sleep(1000);
    outportb(0x378, 0x00);
    Sleep(1000);
    }
    ClosePortTalk();
    return 0;
    }

    این برنامه از یه حلقه ی 10 تایی تشکیل شده که باعث میشه تو هر بار اجرای برنامه LED متصل به پایه ی 2 از پورت پرینتر برای مدت 1 ثانیه روشن و بعد خاموش بشه.
    برای اینکه نتیجه ی کار رو مشاهده کنید از پایه ی دوم پرینتر یک خروجی بگیرید و به یک مقاومت 470 اهم بدید. از پایه ی دیگه ی مقاومت به پایه ی مثبت LED وصل کرده و در نهایت پایه ی منفی LED رو به یکی از پایه های منفی پورت وصل کنید. حالا برنامه رو اجرا کنید.
    موفق باشید.

  5. #5
    کاربر دائمی آواتار alireza643
    تاریخ عضویت
    شهریور 1384
    محل زندگی
    روی زمین
    پست
    368

    Smile سوالات برنامه

    باید خروجی را مستقیم از پشت کیس بگیریم یا از کابل پرینتر
    تفاوتی وجود نداره فقط اگر از پشت کامپیوتر بگیرید و دسترسی به پشت کامپیوتر مشکل باشه شما کمی دچار مشکل میشید.
    پایه دوم کدوم یکی هست اگه یه عکس از پورت بزارید و دومین پایه را مشخص کنید خیلی عالی میشه
    روی تمام پایه های پورت شماره وجود داره ولی برای پورتی اگر شماره نداشت پورت دو ردیف سوراخ داره که ردیف بالا شامل 13 سوراخ هست. اگر پورت رو طوری در نظر بگیرید که ردیف 13 سوراخی رو با بالا باشه و پایه ها رو از راست بشمارید این طوری دومین سوراخ ردیف بالا پایه ی شماره 2 میشه.برای قرار دادن عکس هم الان من تو یه سفر کاری هستم که این مطالب رو مینویسم و شرایط تهیه عکس ندارم ولی در اولین فرصت چشم.
    میشه ی توضیح در مورد اینکه چرا ما مقاومت 470 اهمی میزاریم بدین
    همونطور که میدونید پایه های پورت ولتاژ 5 ولتی دارن و وقتی فقط LED قرار میدید این کار باعث میشه جریان شدیدی تو مدار ما به وجود بیاد که این میتونه به پورت و قطعات الکترونیکی صدمه بزنه برای همین یه مقاومت قرار میدیم تا جریان رو کنترل کنیم. یه بار بدون مقاوت مدار رو ببندید ببینید که LED بنده خدا چقدر نورانی میشه.
    یه توضیح دیگه در مورد این کد هم اگه بزارید عالی میشه

    outportb(0x378, 0x01);
    Sleep(1000);
    outportb(0x378, 0x00);
    Sleep(1000);

    خط اول برنامه عدد 1 رو به بایت اطلاعات پورت موازی ارسال میکنه و اگر این عدد رو به مبنای باینری ببریم میشه 00000001 و این باعث میشه پایه ی شماره 2 برابر با 1 و بقیه پایه ها صفر بشن و LED روشن بشه.
    در خط دوم برنامه برای 1 ثانیه توقف میکنه.
    در خط سوم مقدار صفر به پورت ارسال میشه و این باعث میشه LED خاموش بشه و خط چهارم هم مثل خط دوم عمل میکنه.
    به این شکل اول LED روشن میشه 1 ثانیه روشن میمونه بعد خاموش میشه و یک ثانیه خاموش میمونه و این کار رو 10 بار تکرار میکنه.

  6. #6
    کاربر دائمی آواتار alireza643
    تاریخ عضویت
    شهریور 1384
    محل زندگی
    روی زمین
    پست
    368
    سلام
    از اینکه یه چند وقتی مطلب نداشتیم شرمنده. برای امروز یه برنامه میگذارم که به وسیله ی اون میشه جهت چرخش StepMotor رو کنترل کرد.

    #include <conio.h>
    #include <stdio.h>
    #include <iostream>
    using namespace std;
    #include <windows.h>
    #include <pt_ioctl.c>
    //---------------------------------------------------------------------------
    int main()
    {
    char ch;
    const double DlayVal=1;
    OpenPortTalk();
    outportb(0x378,0x00);
    cout<<"L = Left , R = Right , The Others = Close"<<endl;
    ch = getch();


    for (;;)
    {
    if (kbhit())
    ch = getch();

    if (ch == 'r' || ch == 'R')
    {
    outportb(0x378,0x01);
    Sleep(DlayVal);
    outportb(0x378,0x02);
    Sleep(DlayVal);
    outportb(0x378,0x04);
    Sleep(DlayVal);
    outportb(0x378,0x08);
    Sleep(DlayVal);
    }
    else if (ch == 'l' || ch == 'L')
    {
    outportb(0x378,0x08);
    Sleep(DlayVal);
    outportb(0x378,0x04);
    Sleep(DlayVal);
    outportb(0x378,0x02);
    Sleep(DlayVal);
    outportb(0x378,0x01);
    Sleep(DlayVal);
    }
    else
    break;
    }
    ClosePortTalk();
    return 0;
    }
    //---------------------------------------------------------------------------

    برنامه به این شکل کار میکنه که تو یه حلقه بی نهایت قرار میگره حالا اگر کلید r زده بشه موتور به سمت راست و اگر L زده بشه به سمت چپ میچرخه. سرعت چرخش موتور رو هم به وسیله ی DlayVal میشه کنترل کرد.
    استپ موتور به پایه های 2و3و4و5 وصل میشه. البته موتور رو نباید به صورت مستقیم وصل کرد. برای آزمایش مدار به پایه های ذکر شده 4 تا LED وصل کنید که LED ها به ترتیب روشن میشه.
    مدار اتصال موتور به کامپیوتر رو هم دارم عکس هاش رو آماده میکنم به محض آماده شدن رو سایت قرار میدم تا به جای LED موتور رو به کامپیوتر وصل کنید.
    موفق باشید.

  7. #7
    کاربر دائمی آواتار alireza643
    تاریخ عضویت
    شهریور 1384
    محل زندگی
    روی زمین
    پست
    368
    یه برنامه با C#‎.net2005 نوشتم که با کلیک button1 داده های موجود در پورت سری رو می خونه ( از کنترل SerialPort استفاده کردم. ) حالا مشکل من اینه که می خوام این button رو حذف کنم و به محض اینکه داده ای روی پورت سریال قرار گرفت ( از سخت افزاری که یه سری داده به این پورت ارسال می کنه ) اون داده ها رو بخونه و پردازش کنه. برای اینکار میشه یه وقفه تعریف کرد که به محض قرار گرفتن داده جدید روی پورت فراخوانی بشه؟ من می خواستم از وقفه تایمر استفاده کنم اما چون سخت افزار بطور منظم داده ارسال نمی کنه فایده ای نداشت.
    من با این کنترل کار نکردم ولی نگاه که میکردم یه خاصیت داشت به اسم Hand shaking که به این صورته دستگاه وقتی میخاد مقداری ارسال کنه یه بیت رو یک میکنه وقتی اون بیت یک شد شما متوجه میشی دستگاه چیزی برای ارسال داره و شما هم یه بیت دیگه رو یک میکنی و دستگاه متوجه میشه شما آماده خوندن اطلاعات هستی و شروع به ارسال میکنه بعد که کار تموم شد هم شما و هم دستگاه بیت ها رو صفر میکنید و منتظر میمونید تا دوباره این بیت ها یک بشه.
    در ضمن این کنترلی که شما استفاده کردی یه event داره به اسم DataReceived که با دریافت اطلاعات جدید فعال میشه فکر کنم به جای استفاده از تایمر اگر قسمتی از برنامه که میخواهید با دریافت اطلاعات فعال بشه تو این event قرار بدید دیگه نیازی به ستفاده از وقفه و تایمر نباشه.
    شما یه شماره IC میکرو AVR نمی شناسید که دوتا پورت سری و یه پورتUSB داشته باشه؟
    میکرو که من با اون کار میکنم 4 تا پورت داره که میشه به عنوان ورودی و خروجی از اون استفاده کرد. اگر منظور شما از این سوال اینه که میکرو یی باشه که مثل کامپیوتر پورت USB داشته باشه باید بگم تا جایی که بنده خبر دارم همچین AVR وجود نداره و اگر بخواهید ورودی رو به USB بدید یا از اون خروجی بگیرید باید زحمت کار رو خودتون بکشید.
    موفق باشید.

  8. #8
    کاربر دائمی آواتار alireza643
    تاریخ عضویت
    شهریور 1384
    محل زندگی
    روی زمین
    پست
    368
    ویندوز من XP و کامپایلرم VC++‎.NET هستش . من یه پروژه جدید ساختم و فایل PortTalk_IOCTL.h و pt_ioctl.c رو بهش اضافه کردم . یعنی یه هدر ساختم و محتویات PortTalk_IOCTL.h رو توش کپی کردم و یه فایل cpp که محتویات pt_ioctl.c رو توش کپی کردم ( یکی از ابهاماتم اینجاست . مگه کامپالر ما برای ++C نیست چطور فایل با پسوند C رو می تونه کامپایل کنه ؟! ) اگر چه پسوند رو می شه از cpp به c تغییر داد ولی به نظر خودم ایراد داره ...
    بعد کامپایل می کنم و 96 تا ارور می ده !
    نیازی به کپی فایل ها در فایل جدید نبود فقط کافی بود که این دو تا فایل رو کنار برنامه خودتون قرار بدید و بعد pt_ioctl.c رو تو قسمت includ ها اضافه کنید.
    کامپایلر ما C++‎ هست ولی اگر توجه کنید خودش یکی از بچه های c حساب میشه که یه سری امکانات جدید بهش اضافه شده و به علاوه همون توانایی های c رو هم داره. این مثل مبحث ارث بری تو OOP هست. نیازی به تغییر پسوند نیست.
    این ارور ها مربوط به Printfهست که تو Builder وجود ندارن ولی تو VC این مشکل هست یه کم باهدر ها کار کنید درست میشه یا اینکه تمام دستورات Printf رو کامنت کنید.

    خوب حالا کمی در مورد کار خودم می گم . من برنامه نویسی بازی رو شروع کردم و در این حین به فکر ساخت یه تفنگ افتادم . کلیت کار تو ذهنمه و به نظر خودم عملیه . وقتی تفنگ شلیک می شه مقدار نور دریافتی به مقاومت نوری اندازه گیری می شه و توسط مدار الکترونیکی این کمی نور یا زیادی نور رو به صورت وصل یا قطع یک رله اعلام می کنه حالا من می خوام وصل یا قطع بودن رله رو به کامپیوتر اعلام کنم .
    این کار خوبیه ولی یه مشکل داره:
    شما با تغییر نور تو مقدار مقاومت متغیرتون تغییر حاصل میشه و تو برنامه با رسیدن مقدار نور به حد خاصی رله قطع یا وصل میشه تا اینجا همه چیز درسته ولی مشکل از اینجا شروع میشه که جایی که شما میخواهید بازی کنید باید نورش رو کنترل کنید چون اگر نور از یه حدی بیشتر باشه رله شما یه ضرب وصل میشه و دیگه نیازی به شلیک نیست.
    برای حل این مشکل یا باید مدار رو طوری بسازید که از نور محیط تاثیر نگیره که کار نسبتا مشکلیه یا اینکه از سنسور های دیگه ای استفاده کنید.
    موفق باشید

  9. #9

    تشکر و قدر دانئ

    از تاپئک اقائ علئرضا 643 تشکر مئکنم

  10. #10
    کاربر دائمی آواتار alireza643
    تاریخ عضویت
    شهریور 1384
    محل زندگی
    روی زمین
    پست
    368
    من می خواهم با asp.net یا #c برنامه بنویسم که به پورت پارالل داده بدهد و داده دریافت کند.
    آیا باز هم باید از یک فایل dll استفاده کنم؟در صورتی که باید استفاده شود دلیل استفاده از فایل dll را در این پروژه توضیح دهید.
    من خودم تجربه ای تو کار کردن با سخت افزار به کمک asp.net یا #c ندارم ولی تا جایی که میدونم شما اجازه دسترسی به این پورت رو به طور مستقیم ندارید و ناچار به استفاده از DLL هستید. البته اگر با پورت سریال کار کنید از کامپوننت خود #c میتونید استفاده کنید.
    بیشتر از این درباره C#‎ اطلاعی ندارم و این سوال رو بچه هایی که .net کار هستن بهتر جواب میدن.

  11. #11
    کاربر دائمی آواتار alireza643
    تاریخ عضویت
    شهریور 1384
    محل زندگی
    روی زمین
    پست
    368

    Talking نقشه مدار stepmotor

    سلام
    ببخشید اگر دیر شد.
    فایل ضمیمه شامل نقشه مدار برای کار با استپ موتور هست. برای بستن مدار به نکات زیر توجه کنید.
    موتوری که من در نظر گرفتم 5 ولتی بود ولی اگر موتور با ولتاژهای بالا تر هم استفاده کنید فقط باید به جای

    منبع 5 ولیتی از منبع با ولتاژ بالاتر استفاده کنید.
    ممکنه استپ موتور 6 تا خروجی داشته باشه که در این صورت خروجی 5 و 6 با هم به قطب منفی وصل میشن.
    موقع خرید استپ موتور حتما از فروشنده بخواهید که ترتیب پایه ها رو به شما بگه. اگر نه برای پیدا کردن پایه ها

    هم یه مرحله عظیم پیش رو داریم.
    برای اطلاعات بیشتر درباده استپ موتور و دیگر قطعات اگر به سایت www.ir-micro.com سری بزنید اطلاعات خوبی در قالب مقالات کوتاه به دست میارید.
    موفق باشید.
    عکس های ضمیمه عکس های ضمیمه

  12. #12
    ایا درایوری داریم که پورت usb رو به موازی تبدیل کنه

  13. #13
    کاربر دائمی آواتار alireza643
    تاریخ عضویت
    شهریور 1384
    محل زندگی
    روی زمین
    پست
    368
    سلام
    ببخشید دیر شد.
    ایا درایوری داریم که پورت usb رو به موازی تبدیل کنه
    تو بازار اگر بگردید مدار تبدیل پورت ها رو به هم پیدا میکنید.
    ساخت این مدارات هم کار چندان پیچیده ای نیست. به کمک میکروکنترلر های موجود تو بازار و چند روز وقت گذاشتن خودتون میتونید بسازید.
    موفق باشید

  14. #14
    کاربر دائمی آواتار alireza643
    تاریخ عضویت
    شهریور 1384
    محل زندگی
    روی زمین
    پست
    368

    Question

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

  15. #15
    کاربر جدید
    تاریخ عضویت
    آبان 1386
    محل زندگی
    تهران
    پست
    2
    salam mikhastam in sterpermotor ro to kelasemon ejra konam.be in madarri ke goftid aksesho mizarid to site niaz daram.va tarigheye amade kardanesham lotfan tozih bedid.mamnoon.
    forie fori!!!!!!!!!!!!!!!!

  16. #16
    کاربر تازه وارد آواتار amir_paia
    تاریخ عضویت
    اردیبهشت 1386
    محل زندگی
    تهران
    سن
    34
    پست
    50
    اگه میشه لطف کنید و توضیحاتی هم در مورد پورت USB بدید. البته فکر می کنم که کار با پورت USB سخت تره ولی اگه اطلاعات مختصری هم بدید مفیده.

  17. #17
    من نسخه C++‎ for dos را امتحان کردم جواب نداد.بعدش هم وقتی led را وصل پورت پرینتر میکنم بدون اینکه برنامه را اجرا کنم led روشن باقی میمونه ممنون میشم راهنمایی کنی.

  18. #18
    salam mikhastam in sterpermotor ro to kelasemon ejra konam.be in madarri ke goftid aksesho mizarid to site niaz daram.va tarigheye amade kardanesham lotfan tozih bedid.mamnoon.
    forie fori
    عکس این مدار تو همین صفحه وجود داره. اولین پست رو اگر دقت میکردید تصویر ضمیمه نقشه مدار هست.
    من نسخه C++‎ for dos را امتحان کردم جواب نداد.
    نکته اول اینکه خوب با یه جدیدش امتحان کن. و نکته دوم هم اینکه اگر میشه بفرمایید منظورتون از جواب نداد چیه؟ اگر دقیق بفرمایید بهتر میشه راهنمایی کرد.
    بعدش هم وقتی led را وصل پورت پرینتر میکنم بدون اینکه برنامه را اجرا کنم led روشن باقی میمونه ممنون میشم راهنمایی کنی.
    به طور پیش فرض خروجی های این پورت با 1 ست شدن و برای همین اگر LED وصل کنید روشن میشه اگر بخواهید خاموش بشه باید مقدار خروی ها رو به وسیله ی برنامه صفر کنید.

    نکته: این آقای Alireza643 که از دوستان و بستگان من میشه در حال حاضر مشغول به گذراندن دوره خدمت زیر پرچم هست. برای همین تا بازگشت افتخار آفرین این عزیز من در حد توان به سوالات این بخش جواب میدم.
    موفق و سربلند باشید.

  19. #19
    کاربر جدید
    تاریخ عضویت
    آبان 1386
    محل زندگی
    تهران
    پست
    2
    salam parname enteghale file az tarighe port ro bahamin port talk mishe baram befrestid? mamnoon foriiiiiieee

  20. #20
    سلام
    من نسخه Turbo C++‎ 3.0 DOS استفاده کردم که فکر میکنم آخرین ورزن این نسخه باشد.که در این نسخه فایلهای هدر windows.h winioctl.h ندارد و فیل هدر PortTalk_IOCTL.h را نمیتواند باز کند.
    اما در این نسخه تابع outportb در فایل هدر dos.h داریم.که من بااستفاده از این تابع برنامه زیر را نوشتم برنامه اجرا شد ولی led چشمک نزد.اگر برایتان امکان دارد برنامه زیر را برای من اصلاح کنید.
    #include <stdio.h>
    #include <dos.h>
    int main(void)
    {
    for(int i = 0; i < 10; i++)
    {
    outportb(0x378, 0x01);
    delay(100);
    outportb(0x378, 0x00);
    delay(100);
    }
    return 0;
    }

  21. #21
    masoud جان درسته که این توابع توی این سرفایل ها وجود داره ولی یادتون باشه شما دارید تو ویندوز برنامه مینویسید ولی این سرفایل مال زمانه داسه و تو داس اجازه دسترسی مستقیم به پورت ها گرفته نشده بود. به هر حال شما میخواهید برنامه رو تو ویندوز اجرا کنید و برای دسترسی به پورت هم باید به یکی از روش هایی که گفته شد عمل کنید.
    شرمنده از اینکه تنها کمکمی که میتونم به شما بکنم اینه که بگم از کامپایلر جدید تری استفاده کنید که این سرفایل رو داشته باشه.
    راستی میشه بگید مشکلتون چی هست که از کامپایلر های قدیمی استفاده میکنید؟

  22. #22
    alireza سلام
    من از این کامپایلر استفاده به دلیل اینکه فقط با همین نسخه کار کردم و فکر میکنم خیلی هم قدیمی نباشه چون در دانشگاها همین کامپایلر تدریس میشود.
    آیا خودتان توانسته اید پورتها خروجی بگیرید؟ اگه توانستید نام کامل نسخه ای که استفاده کرده اید را بنویسید تا هم من استفاده کنم هم دیگران.
    thanks

  23. #23
    سلام
    با اجازه ی شما چون من کارم این هست مجبورم که بتونم از پورت ها خروجی بگیرم. قبلا از کامپایلر بورلند نسخه ی 6 تا 2006 استفاده میکردم و الان هم که نسخه ی 2007 اومده که با اون هم کار کردم و هیچ مشکلی وجود نداشت.
    با کامپایل ویژوال سی 6 هم بدون مشکل کار کردم.
    فکر نمیکنم که مشکلی داشته باشه.
    اگر میتونی از این نسخه ها استفاده کن. اگر برای تهیه ی نسخه ی مناسب مشکلی دارید و در صورتی که تهران هستید به من بگید هر کدوم از این کامپایلر ها رو که تمایل داشتید من در اختیار شما میگذارم.
    موفق باشید.

  24. #24
    سلام
    مطالب مربوط به برنامه نویسی برای پورت موازی به طور کامل در قالب یک فایل PDF در بخش مقالات سایت قرار داده شد.
    https://barnamenevis.org/showthread.php?t=86247
    از این به بعد به امید خدا یک پورت جدید رو شروع میکنیم. اگر پیشنهادی برای ادامه کار دارید بفرمایید در غیر این صورت مطلب بعدی درباره پورت های سریال خواهد بود.
    موفق باشید.

  25. #25
    دوستان سلام .. بحث جالبیه
    اما امکان داره کسی بگه این امکان وجود داره که محدودیت های ویندوز برداشته بشه و بشه بصورت مستقیم با پورتها ارتباط برقرار کرد ؟
    من میدونم که همون کامپایلر توربور سی تحت محیط 16 بیتی داس شبیه سازی میشه .. اما با این تفاسیر امکانش هست ؟ آ

  26. #26
    با تشکر من مداری که قبلا گذاشتید بستم ولی کارنمی کند اگه می تونی توضیحات کاملتری بده من ازاستپ موتورsanyo denki 103h546-0770 شش سیم استفاده می کنم.

  27. #27
    سلام
    اما امکان داره کسی بگه این امکان وجود داره که محدودیت های ویندوز برداشته بشه و بشه بصورت مستقیم با پورتها ارتباط برقرار کرد ؟
    اگر قرار بود این محدودیت برداشته بشه خوب از اول ایجاد نمیشد. برای دسترسی به پورت های سری نیازی به این DLLها و برنامه های کمکی ندارید و به کمک readfile,writefiel میتونید با این پورت ها ارتباط برقرار کنید که در این صورت بسیاری از درد سر هایی که این برنامه به جای شما با اون ها درگیر بودن به عهده ی خود شما میوفته.

    با تشکر من مداری که قبلا گذاشتید بستم ولی کارنمی کند اگه می تونی توضیحات کاملتری بده من ازاستپ موتورsanyo denki 103h546-0770 شش سیم استفاده می کنم.
    مدار تست شده و کار میکنه. مشکل به وجودآمده در نحوه ی اتصال موتور هست. برای تست مدار از LED استفاده کنید.
    برای رفع مشکل با استپ موتور هم اگر موارد زیر رو در نظر بگیرید انشاالـ... که مشکل حل میشه.
    اول اینکه موتور شما چون 6 سیمه هست 2 تا سیم صفر داره که احتمال 99.99% همرنگ هستن و این دوتا سیم باید با هم به سیم صفر بسته بشن.
    ترتیب جریان دادن به پایه های موتور هم خیلی مهمه که اگر درست رعایت نشه موتور نمیچرخه. از روی نقشه ی موتور پایه های 1 تا چهار رو پیدا کنید و به ترتیب به سیم های 1 تا چهار وصل کنید.
    اگر نقشه ای در اختیار ندارید باید با آزمایش پایه ها رو پیدا کنید.
    اول به آهستگی موتور رو با دست بچرخونید تا از میزان حرکت موتور به ازای هر پله دقیق آگاه بشید.
    به این شکل که پایه های منفی رو به سیم صفر وصل کنید.
    یکی از پایه ها رو صفر در نظر بگیرید و به اون برق وصل کنید موتور در یک جهت میچرخه. حالا یکی دیگه از سه سیم باقی مونده رو انتخاب کنید و به اون برق بدید اگر موتور به اندازه حرکت یک پله و در جهت قبل چرخید این پایه میشه پایه ی 2 اگر نه باید درباره دوتا پایه ی باقی مونده امتحان کنید. این کار رو ادامه بدید تا ترتیب هر چهار پایه مشخص بشه.
    به خاطر اینکه سایت برنامه نویس هست از توضیح بیشتر در این مورد معضورم. در صورت مشکل به مقالات و کتاب های مرتبط مراجعه کنید.
    موفق باشید.

  28. #28
    با سلام

    دوستان دیدم بحث سخت افزار هست بنده یه سوالی داشتم منو ببخشید اگه کمی بی ربط هست البته نه کاملا

    من AVR رو میگزرونم البته با زبان بیسیک .
    دوست دارم برم سراغ c که کامپایلری که معمولا ازش استفاده میکنن کد ویژن هست .
    میخواستم بدونم دوستانی که کار کردن با کد ویژن چه نواقصی داره و چه منافعی .
    آیا کامپایلری دیگری پیشنهاد میکنید برای این کار ؟

    سوال دیگرم در مورد مرجه خوب برای کد ویژن هست ممنون میشم منو راهنمایی کنید .

  29. #29
    سلام
    دوستان دیدم بحث سخت افزار هست بنده یه سوالی داشتم منو ببخشید اگه کمی بی ربط هست البته نه کاملا

    من AVR رو میگزرونم البته با زبان بیسیک .
    دوست دارم برم سراغ c که کامپایلری که معمولا ازش استفاده میکنن کد ویژن هست .
    میخواستم بدونم دوستانی که کار کردن با کد ویژن چه نواقصی داره و چه منافعی .
    آیا کامپایلری دیگری پیشنهاد میکنید برای این کار ؟

    سوال دیگرم در مورد مرجه خوب برای کد ویژن هست ممنون میشم منو راهنمایی کنید .
    سوال شما مربوط به برنام نویسی embeded میشه که تو سایت یه بخش برای این مورد داریم. سوال خودتون رو https://barnamenevis.org/forumdisplay.php?f=119 مطرح کنید تا اساتید این کار جواب شما رو بدن
    موفق باشید

  30. #30
    Help me PLZ
    سلام دوستان خسته نباشید
    من می خوام برنامه نویسی پورت ها رو یاد بگیرم .... به شدت نیاز دارم
    اول باید پورت ها رو بشناسم بعد بتونم دیتا رو به پورت ها بفرستم و از پورت بخونم.....
    اگه ممکنه کمکم کنید من در این زمینه اطلاعات زیادی ندارم
    واقا ممنونم

  31. #31
    سلام
    دوست عزیز اگر بفرمایید کجای کار مشکل دارید بهتر میشه راهنمایی کرد.
    اگر کتاب درباره پورت ها میخواهید که بفرمایید که معرفی کنیم. اگر هم برای شروع کار مشکل دارید که فکر کنم از همین مقاله استفاده نمایید و سوالات خودتون رو مطرح کنید که اگر تونستیم جواب بدیم.
    موفق باشید.

  32. #32
    اگه مشه در مورد ارتباط با usbدر زبان c منو راهنمایی کنید

  33. #33
    سلام
    یک نمونه پروژه با سورس کامل برای ارتباط با پورت usb
    که برنامه کامپیوتر اون با C++‎builder6 هست و برنامه میکرو اون با c و win avr هست
    اینم بگم اتصال میکروavr (at,ega8( به صورت مستقیم هست و این نمونه یک دماسنج هست که دمای محیط رو اندازه می گیره و روی پورت usb می فرسته و روی pc به نمایش در می یاد

    http://kavirelectronic.ir/fa/modules...showpage&pid=3
    منبع:کویرالکترونیک

  34. #34

    Question



    من از همگي تشكر مي كنم

    http://mtb4vb.blogfa.com

  35. #35
    میشه به جای LED ومقاومت از یک لامپ استفاده کرد؟

  36. #36

    نقل قول: آموزش ارتباط با سخت افزار

    با سلام
    مي شه توضيح بديد در C++‎ به وسيله پورت USB چطور با يه پرينتر مي شه ارتباط برقرار كرد و مثلاْ وضعيت اون رو خوند؟يا بهش رشته رو براي چاپ فرستاد؟
    اصلاْ اين كار شدني هست؟راحته يا سخته؟

  37. #37
    کاربر دائمی آواتار kernel
    تاریخ عضویت
    اردیبهشت 1387
    محل زندگی
    تهران
    پست
    130

    Cool نقل قول: آموزش ارتباط با سخت افزار

    پیشنهاد میکنم به بچها که برای کار با سخت افزار اول برن میکرو کنترلر یاد بگیرن .
    میکرو کنترلر یه ای سی کوچیکه که پایه های اونو به صورت 8 تایی به اسم پورت می شناسیم
    میکرو داخل خودش یک پروسسور و چند نوع حافظه مختلف داره که شما می تونین برنامتون رو به زبان های
    پاسکال - C و بیسیک بنویسید و بعد از کامپایل داخل میکرو کپی کنید و بعد با اتصال میکرو به کامپیوتر می تونین با فرمان هایی که خودتون براش تعریف کردین وسائل مختلف رو باهاش کنترل کنین .
    البته میکرو حتما نیازی به کامپیوتر نداره و خودش هم میتونه کلی کارا رو انجام بده.
    در مورد پورتها هم باید بگم بین سریال و پارالل ، سریال برای کار بهتره چون خطر اسیب رسوندن به مادربورد کمتر میشه ولی در کل هردوی اینها دیگه قدیمی شدن و تو مادربورد های جدید اثری ازشون نیست پس بهتره برای ارتباط با سخت افزارهایی که خودمون میسازیم از USB استفاده کنیم که کلی برتری نسبت به هردو پورت قبلی داره .
    من تا بحال 9 تا روبوت ساختم که 7 تا از اونا با میکرو کنترل می شد ( به تنهایی ).
    تو روبات 8 چون از تکنیک های پردازش تصویر استفاده کردم یک ارتباط با کامپیوتر هم به صورت wireless درست کردم که به پورت سریال متصل می شد.
    تو روبات آخری هم که ساختم از پورت USB برای اتصال به کامپیوتر استفاده کردم در ضمن این آخریه قابلیت اتصال و کنترل از طریق اینترنت هم داره
    اگه چیز دیگه ای برای سوال دارین من با اطلاعات اندک خود میتونم راهنمایی تون بکنم

  38. #38
    کاربر دائمی آواتار kernel
    تاریخ عضویت
    اردیبهشت 1387
    محل زندگی
    تهران
    پست
    130

    Cool نقل قول: آموزش ارتباط با سخت افزار

    نقل قول نوشته شده توسط rabbitwatcher مشاهده تاپیک
    با سلام
    مي شه توضيح بديد در C++‎ به وسيله پورت USB چطور با يه پرينتر مي شه ارتباط برقرار كرد و مثلاْ وضعيت اون رو خوند؟يا بهش رشته رو براي چاپ فرستاد؟
    اصلاْ اين كار شدني هست؟راحته يا سخته؟
    در مورد سوال شما باید بگم ارتباط با سخت افزار با ارتباط با پرینتر تفاوت داره ، چون هر سخت افزاری که میسازیم طبق نیاز و نوع طراحی خودمون درایورش رو می سازیم و با اون ارتباط بر قرار می کنیم و این یک مسئاله شخصی برای خودمان است ، اما پرینتر ! تصور کنید شما که برنامه نویس هستید میخواهید در برنامه تان یک صفحه گزارش را پرینت بگیرید ، پس شما مجبورید که با پرینتر خود با استفاده از پورت ارتباط بر قرار کنید بنابر این لازم است تا با دستورات داخلی پرینتر خود ارتباط بر قرار کنید و هدها و موتورها و .... ر ا کنترل کنید . اما اینجا یک مشکل وجود دارد و آن اینکه تعداد بسیار زیادی شرکت در دنیا مشغول ساخت پرینتر می باشند و هر کدام از این دستگاهها معماری سخت افزاری خاص خود را دارند ! ایا شما به عنوان برنامه نویس باید کار با تمام پرینترهای دنیا را بلد باشید ؟
    قطعا اینطور نیست!
    در واقع امکان چاپ و ارتباط با انواع چاگر یک امکان در سیستم عامل میباشد و شما تنها به استفاده از این امکانات می پردازید ، و بقیه ماجرا و ارتباط سیستم با پرینتر به عهده سیستم عامل می باشد!

  39. #39

    نقل قول: آموزش ارتباط با سخت افزار

    با سلام
    از تایپیکی که زدید خیلی متشکرم ...
    انشاءالله ادامه داشته باشد ما که استفاده کردیم.

  40. #40

    نقل قول: آموزش ارتباط با سخت افزار

    سلام
    این تاپیک چرا غیر فعال است.
    من میخواستم بدانم که چگونه میتوانم پورت com‌ را در c‌ راه اندازی کنم و از آن استفاده کنم.

صفحه 1 از 3 123 آخرآخر

قوانین ایجاد تاپیک در تالار

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