# برنامه نویسی میکروکنترلر (MicroController) ها و MicroProcessor ها > برنامه نویسی سیستم های Embeded > مباحث عمومی کار با سخت افزارها، سنسورها و لوازم جانبی >  usb in C#‎

## Niloofar_Aria

با سلام 
می خواستم از طریق usb با برنامه C#‎ 
,  LEDرو روشن کنم ممنون می شم یه نمونه کد ازC#‎ و اینکه از کدوم فایل dll باید در برنامم واسه شناخت usb  استفاده کنم بزارین؟
سخت افزارش از کدوم IC و وسایل دیگه باید استفاده کنم با چه مشخصاتی
اگه ممکنه کامل در این زمینه توضیح بدین که چه جوری می تونم اطلاعات از کامپیوتر به سخت افزار انتقال بدم از طریق usb

----------


## Mehran.GH

http://www.vsj.co.uk/articles/display.asp?id=600

http://khason.net/blog/read-and-use-...device-from-c/

http://www.icsharpcode.net/OpenSourc...b/default.aspx

----------


## Niloofar_Aria

ممنون از راهنماییتون دوست خوبم
بایدازفایل ftdxx.dll در برنامه C#‎ استفاده کنم ازIC ft232استفاده می کنم ممنون میشم سورس برتامه رو بهم بدین.

----------


## Mehran.GH

دوست عزیز 
شما اگر زحمت بکشید و اندکی جستجو کنید در سایت  مورد نظرتان می توانید اطلاعات مورد نیاز را پیدا کنید.
 می دانم که حوصله نصیحت گوش دادن ندارید  بنابراین فقط برای پیشرفت خودتان پیشنهاد می کنم در آینده اگر سوال فنی دارید ابتدا اندکی جستجو کنید و دقیق متوجه باشید چه کاری می خواهید انجام دهید و اجزاء کارتان را دقیق بشناسید  و بعد برای سوال پرسیدن  بگویید چه کاری انجام دادید و  بعد در یک مورد مشخص بنویسد کجا به مشکل برخوردید و آن می شود سوال که اگر اینجا هم کسی نداند در هر فروم تخصصی خارجی هم مطرح کنید جواب می گیرید اما  اینکه نوشته بودین "اگه ممکنه* کامل* در این زمینه توضیح بدین که چه جوری ....... "  معمولا برای کسانی که در رشته فنی فعالیت می کنند و باید مشکلی را حل کنند جالب نیست!

به هر حال 

مثالهای C#‎‎‎ اینجا هست:
http://www.ftdichip.com/Projects/Cod...les/CSharp.htm

----------


## Niloofar_Aria

سلام دوست خوبم
من می خوام تو برنامه ام به  C#‎ وقتی رو checkbox کلیک کردم تیک دار شدLED روشن بشه
نمی دونم دستور write که ورودیش checkboxeچی میشه کدش؟
example ها رو دیده بودم قبلا بازم ممنون از لطفتون
   ftd driverهمون f ile ftdxx.net.dll هست که تو برنامم استفاده کردم؟
چه طوری می تونم  ICATMEGA8رو به ICFT232 وصل کنم؟
ممنون میشم راهنماییم کنین

----------


## Mehran.GH

سوال : من می خوام تو برنامه ام به C#‎‎‎‎‎‎ وقتی رو checkbox کلیک کردم تیک دار شدLED روشن بشه
نمی دونم دستور write که ورودیش checkboxeچی میشه کدش؟

پاسخ: باید در EVENT  مربوط به CheckedChanged  کد را بنویسید مثلا

private void chkBox_CheckedChanged(object sender, System.EventArgs e)
{
  if (sender is CheckBox)
  {
    CheckBox checkbox = sender as CheckBox;
* if (checkbox.Checked)*
    {
      checkbox.Text = "Checked";
    }
    else
    {
      checkbox.Text = "UnChecked";
    }
  }
}
سوال :ftd driverهمون f ile ftdxx.net.dll هست که تو برنامم استفاده کردم؟

پاسخ: بله یک روش استفاده از درایور D2xx است که مستنداتش را در این فایل می توانید بخوانید http://www.ftdichip.com/Documents/Pr...s/D2XXPG34.pdf

برای بررسی روشها و درایورهای دیگر هم این صفحه 
http://www.ftdichip.com/Drivers/D2XX.htm

سوال:چه طوری می تونم IC ATMEGA8رو به ICFT232 وصل کنم؟

پاسخ:یک روش استفاده از چیپ FT-232BM  می باشد
 این چیپ  که برای اتصال سریال به FT-232 کاربرد دارد و در این روش باید پینهای یک پورت سریال آزاد در میکروکنترل IC ATMEGA8  را به  FT-232BM  متصل کرد.

----------


## Niloofar_Aria

سلام دوست خوبم

1) دستور ft_write(write data to devic)که ورودیش میشه checkbox رو می خواستم ؟؟؟ورودی که checboxe باید با یه دستوری به ft232فرستاده بشه که درآخرled روشن بشه؟

2)فایل ftd232.dllرو از لینکی بهم دادین گرفتم ولی به refrence برنامم که با vsبه زبان C#‎‎هست اضافه می کنم اضافه نمیشه؟؟؟؟ یه drivere ftdxx.net.dll قبلا گرفته بودم که به  refrence  برنامم اضافه شده بود این driverبرای ftd232bm استفاده میشه؟؟

3)شماتیک مال ft232r هست که فرستادین .میشه شماتیکی که طریقه اتصال ft232bm به atmega8 نمایش میده رو بهم بدین ممنون میشم.

----------


## Mehran.GH

شما مستندات را مطالعه نکردی و دستورات C#‎‎‎‎‎‎‎‎ را هم مشکل داری به نظر من در این مرحله باید برگردی عقب یعنی اینکه بشینی  موضوعاتی که نیاز داری برای کارت مطالعه کنی و بعد ابزار مناسب را انتخاب کنی , منظور از ابزار این است که بدانی چه  IC برای کارت مناسب است چه درایوری مناسب است چه روشی برای نوشتن نرم افزار در pc مناسب است و چگونه باید به آن دست یافت اینها را باید بعد از اینکه اجزا را خوب فهمیدی پیدا کنی. تفاوت فهمیدن و دانستن در این است که شما وقتی موضوعی را بفهمید می توانید برای موارد و مشکلات مشابه هم منطبق کنید اما وقتی موضوعی را بدانید فقط در همان مورد می توانید دانسته ها را به کار ببرید. از نوع سوالات شما معلوم است که کار خود را نفهمیده اید و دنبال راه حل آسان و تمام شده هستید!
البته در مورد این تمرین ساده شانس با شما بوده و  تمامی اطلاعات در سایت اصلی موجود است و فقط باید اندکی وقت گذاشت و پیدا کرد اما در یک پروژه در دنیای واقعی اینگونه نخواهد بود!

به هر حال 

1- دستوری که ورودیش Checkbox بشود یعنی چی؟!!!

وقتی روی Checkbox  کلیک کنید یک Event  اتفاق میفتد و در این CheckedChanged  شما می توانید محتوای Chechbox.text  را مثلا به USB  بفرستید و یا هر کار دیگر که نیاز هست انجام دهید. یک بار دقیق properties و Event  های checkbox  را نگاه کن .

2 - استفاده از درایور را با توجه به اینکه برای تازه کارها مشکل است توصیه نمی کنم و پیشنهاد می کنم از روش دیگر که در سایت آمده استفاده کنید یعنی Virtual COM Port   

در این روش USB device  شما همانند یک پورت سریال مجازی شناخته می شود و استفاده از آن در C#‎‎‎‎‎‎‎‎  هم همانند ارتباط با یک COM  است و بسیار ساده است و نمونه برنامه هم در سایت اصلی وجود دارد.

3- چیپ ft232r   مدل بعدی ft232bm  هستش و یک مزیت دارد نسبت به bm  که از آنجا که هیچ فعالیتی نشان ندادی برای کار خودت تفاوتش را باید خودت پیدا کنی!     :متفکر: 

شماتیک کامل برای تمامی چیپ ها در این سایت وجود دارد 
http://www.ftdichip.com/Documents/Schematics.htm

روش اتصال به میکرو هم اگر نگاهی به میکرو انداخته بودی متوجه می شدی که پایه های Tx و RX   در میکرو وجود دارد و در مداری که تصویرش را ارسال کردم هم همینطور و باید این پینها با ترتیبی که باز هم باید خودت پیدا کنی به هم متصل شوند  :لبخند:

----------


## msd163

سلام دوستان
بحث جالب و به درد بخوري بود
من هم نياز به برقراري ارتباط با ميكرو از طريق usb دارم
ميكروهاي سري ez-usb سيپرس اين قابليتو دارند
at6c711 هم همينطوره
اما هرچي سرچ كردم اطلاعات به درد بخوري براي اينا پيدا نكردم

اگه ممكنه چندتا ميكرو  كه تو بازاراي ايران به راحتي ميشه تهيه كرد و قابليت ارتباط با usb رو داره معرفي كنيد

با تشكر

----------


## farzadsw

اگه منظورتون اینه که خود میکرو کنترلر از پورت usb پشتیبانی کنه ، یه سری از میکرو کنترلر های avr این قابلیت رو دارن (avrusb )  ولی فکر نکنم تو ایران آورده باشن. 
تمام میکرو هایی که بر اساس arm ساخته شدن ،  usb رو پشتیبانی میکنن . چندتا از سری های اونا تو ایران هست.

اگه منظورتون اینه که از یه میکروی avr به عنوان مبدل سریال usb استفاده کنید ، چند تا پروژه اپن سورس در این زمینه انجام شده ، کافیه جستجو کنید.

اگرم منظورتون استفاده از ic های مبدل به usb هست (rs232, spi , parallel ) ، چند تا شرکت چیپ مخصوص این کار زدن ، یکی از اونا ftdi هست که تو همینجا درموردش صحبت شد. سیپرس و Prolific هم چیپ های مشابه و ارزونی زدن ولی فکر نکنم تو ایران گیر بیاد.

----------


## msd163

:متفکر: 



> به هر حال 
> 
>  مثالهای C#‎‎‎‎‎ اینجا هست:
> http://www.ftdichip.com/Projects/Cod...les/CSharp.htm


من مثال C#‎‎  رو گرفتم ولي به يه dll گير ميده:
FTChipIDNet.dll
اين فايل بايد تو reference اضافه بشه.
تو اينترنت سرچ كردم ولي چيزي پيدا نكردم

در ضمن FTD2XX.DLL  هم تو reference اضافه نميشه.
راه حلش استفاده از [dll import ] هست يا اينكه بايد كار ديگه اي بكنم؟
-----------------------------------------------
لطفا راهنمايي كنيد...

----------


## farzadsw

طبق همین رفتید اضافه نشد؟:

 A reference should be added to the FTD2XX_NET.DLL file in the Solution Explorer.  Simply right-click on the References item in the Solution Explorer in your Visual Studio project, select "Add Reference" then "Browse" and locate the DLL.  The XML file should be placed in the same location


درایورش رو نصب کردید ؟
http://www.ftdichip.com/Drivers/D2XX.htm

----------


## msd163

> طبق همین رفتید اضافه نشد؟:


بله . پيغامش اينه :
 the reference to ' ...\ftd2xx.dll ' could not be added . 
please sure that the file is accessible, and that it is a valid assembly or COM component  

اين پيغاميه كه هنگام لود كردن فايلهاي api هم ميده .




> درایورش رو نصب کردید ؟


اما در مورد درايورش بايد بگم كه من هنوز هيچ ميكرويي تهيه نكردم.
در واقع بدون استفاده از ميكروي ft232 ميخوام كد نويسي كنم.
امكانش هست ؟
البته بعدا حتما تهيه مي‌كنم . 
 -----------
اصلا ميشه از  يه درايور مجازي استفاده كرد كه براي تست برنامه هم بشه ازش استفاده كرد ؟

----------


## farzadsw

درایورش باید نصب باشه ، طبق دستور العملی که گفته. من خودم این کار رو نکردم و از همون درایوری که یه پورت مجازی میسازه استفاده کردم(VCP)، ولی به هر حال خودش گفته بود برای استفاده از حالت FTD2XX.DLL (نه ساخت درایو مجازی ، یعنی در کل 2 نوع درایور داره یکی برای FTD2XX.DLL و یکی برای vcp) باید درایور مخصوص اون رو نصب کنید که من لینکش رو گذاشتم.
کام مجازی که درایور (درایور مخصوص کام مجازی یا VCP) درست میکنه ، وقتی قطعه رو به کامپیوتر وصل میکنید فعال میشه و بدون قطعه نمیشه ازش استفاده کرد.

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

----------


## msd163

تشكر

مشكل من جاي ديگه بود كه خوشبختانه حل شد .
...........................
جريان از اين قراره ...
dll هايي كه براي ارتباط استفاده مي‌شند دو نوعند :
  1.   win32 
و
  2.     net.

فايلهاي win32 از توي reference اضافه نمي‌شند.
من فايلهاي net. پيدا كردم و اضافش كردم.
الان ديگه تو برنامه نويسي مشكلي نيست.

براي استفاده از توابع win32 هم بايد از   [dllimport] استفاده كرد .
............................
نسخه نتشو تو اين لينك گذاشتم :
http://www.4shared.com/file/25339620...X_NET_106.html

----------


## msd163

اصفهانیای عزیز ...
کسی نمیدونه کجا میشه FT232R پیدا کرد؟
FT232BL هست ولی R پیدا نکردم .

تشکر.

----------


## msd163

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

----------


## M_Ali_Safdari

از طریق میکرو های AVR معمولی هم میتوان با USB ارتباط بر قرار کرد.
البته فقط بسته های Token,Control میشه ارسال کرد والبته با LOW Speed یعنی سرعت 1.5MBit/sec
من اینکار رو با Mega8 انجام دادم و خیلی خوب هم کار می کنه .چند ساله دارم ازش به عنوان USB به سریال و Generic I/O تو کارهام استفاده می کنم و مشکل خاصی نداره

----------


## abasfar

سلام من هم دقیقا میخوام اینکار را انجام بدم اما نقشه مدار را ندارم میشه به من هم کمک کنید

----------

