# برنامه نویسی میکروکنترلر (MicroController) ها و MicroProcessor ها > برنامه نویسی سیستم های Embeded > مباحث عمومی کار با سخت افزارها، سنسورها و لوازم جانبی >  تفاوت LPT1 و LPT2 در برنامه نویسی

## siavashman

1. من توی دلفی برای کنترل LPT به این صورت کد مینویسم:

Out32($378,$53);

عدد $378 چیه که توی کد نویسی ها ازش استفاده میشه؟

2. فکر کنید با دلفی داریم برنامه مینویسیم برای یک کابل تبدیلی usb به LPT1, مثل این:
http://apple.clickandbuild.com/cnb/s...+RS232+%2B+DB9

حالا سوالم اینه که همون دستوراتی که برای LPT روی mainboard مینویسیم برای همین کابل تبدیل هم بایدبه همون شکل بنویسیم؟ نباید بگیم مثلا فلان usb باید دستورات را اجرا کنه؟

3. من دیدم که همیشه پین های 1 تا 9 مورد استفاده قرار میگیرن. البته میدونم در LPT2 پینهای دیگه برای پرینتر کاربرد دارن. مثلا نوع پرینتر را تشخیص میدن و ... حالا میخوام بدونم LPT1 فقط 1 تا 9 رو داره برای اینکه برای پرینتر نیست و فقط 1 تا 9 رو میتونیم 0 و 1 کنیم و برنامه نویسی اش هم دقیقا مثل LPT2 هستش؟

4. پورتهای LPT توانایی 8 بیت اطلاعات یعنی 255 حالت رو دارن. حالا اگه بخوایم بیشتر از 255 حالت رو داشته باشیم، مثلا اگه بخوایم 2000 حالت داشته باشیم و وضعیت 2000 مورد رو در عین حال trace کنیم. چه جوری باید این کار رو انجام بدیم؟ (میدونم خیلی کلی پرسیدم)  :خجالت: 

5. کابلهای تبدیل usb to LPT شرکت ftdichip توی ایران پیدا میشه؟ آخه خیلی خوب درایورهاش رو ساپورت میکنه. از کجا باید خرید؟

----------


## farzadsw

> عدد $378 چیه که توی کد نویسی ها ازش استفاده میشه؟


آدرس پورت lpt هست



> . فکر کنید با دلفی داریم برنامه مینویسیم برای یک کابل تبدیلی usb به LPT1, مثل این:
> http://apple.clickandbuild.com/cnb/s...+RS232+%2B+DB9
> 
> حالا سوالم اینه که همون دستوراتی که برای LPT روی mainboard مینویسیم برای همین کابل تبدیل هم بایدبه همون شکل بنویسیم؟ نباید بگیم مثلا فلان usb باید دستورات را اجرا کنه؟


اون لینک مربوط به تبدیل سریال (rs232) به usb هست نه lpt
درایورهایی که همراه کابل تبدیل هست ، معمولا یه پورت مجازی درست میکنه و برنامه نویسی برای اون پورت مجازی مشابه پورت واقعیه.
برنامه نویسی برای usb (مخصوصا بدون داشتن درایور ) پیچیده هست. با ایجاد پورت مجازی توسط درایور نیازی به نوشتن برنامه برای usb نیست.



> . من دیدم که همیشه پین های 1 تا 9 مورد استفاده قرار میگیرن. البته میدونم در LPT2 پینهای دیگه برای پرینتر کاربرد دارن. مثلا نوع پرینتر را تشخیص میدن و ... حالا میخوام بدونم LPT1 فقط 1 تا 9 رو داره برای اینکه برای پرینتر نیست و فقط 1 تا 9 رو میتونیم 0 و 1 کنیم و برنامه نویسی اش هم دقیقا مثل LPT2 هستش؟


تا اونجایی که من میدونم lpt1,lpt2 اسمهای پورتهای موازی هستن و فرقی با هم ندارن . برنامه نویسی برای جفتشون یجور هست.



> پورتهای LPT توانایی 8 بیت اطلاعات یعنی 255 حالت رو دارن. حالا اگه بخوایم بیشتر از 255 حالت رو داشته باشیم، مثلا اگه بخوایم 2000 حالت داشته باشیم و وضعیت 2000 مورد رو در عین حال trace کنیم. چه جوری باید این کار رو انجام بدیم؟ (میدونم خیلی کلی پرسیدم)


یکی از دلایلی که پورتهای پارالل نسبت به سریال خیلی کمتر استفاده میشن اینه که قابلیت انعطاف زیادی ندارن . البته برای کار های ساده مثل قطع و وصل چند تا کلید پورت موازی ساده تره( باید مدارتون رو طوری طراحی کنید که به مادربوردتون آسیبی نرسه!)
البته میتونید 2000 تا وضعیت رو با 2تا پورت و یا حتی 1 پورت موازی ایجاد کنید ولی به ic ها جانبی زیادی احتیاج دارید و مدارتون بزرگتر میشه.(شیفت رجیستر ، دیکدر و...)
در حالی  که اگر از ارتباط سریال(rs232) و یک میکرو کنترلر استفاده کنید ، مدارتون ساده تر و قابلیت انعطاف تو طراحی زیادتر میشه.



> 5. کابلهای تبدیل usb to LPT شرکت ftdichip توی ایران پیدا میشه؟ آخه خیلی خوب درایورهاش رو ساپورت میکنه. از کجا باید خرید؟


معمولا کابلهایی که تو ایران هستن از همون ftdi استفاده کردن ولی در عمل زیاد فرقی نمیکنه چیپشون چی باشه ، همشون یه پورت مجازی درست میکنن(به وسیله درایوری که توی cd همراه کابل هست) که از این به بعد شما با این پورت مجازی کار دارید.


اگه شما اصراری روی استفاده از پورت پارالل و یا تبدیل usb/lpt ندارید ، من توصیه میکنم از rs232 به جای lpt  استفاده کنید و طرف سخت افزارتون یه میکرو کنترلر داشته باشید.

----------


## arturmacnight

dll برای پروگرمینگ پورت rs232 هست؟

----------


## siavashman

خیلی راهنمایی هاتون به من کمک میکنه.

نمیشه $378 رو عوض کرد و مثلا یه شماره دیگه برای USB داد تا اتصال به اون تبدیل وصل بشه؟

مثلا بگیم کابل تبدیل USB to LPT یک بایت رو صفر کنه یا یک کنه


برنامه نویسی برای rs232 توی دلفی به چه شکلیه؟ میشه یه مثال برام بزارید؟  :لبخند:

----------


## farzadsw

با اون دستور out32 فقط میشه با پورت lpt ارتباط برقرار کرد . 
همونطور که گفتم برنامه نویسی برای پورت usb خیلی سخت تر از بقیه پورتهاست چون بسته به اینکه سخت افزارتون تو مد hid , modem یا چیز های دیگه باشه نوشتن برنامه براش فرق میکنه.( ولی در عوض کار end user راحت تر میشه ). البته نیازی هم به نوشتن برنامه برای پورت usb نیست چون اون کابل شما یه پورت مجازی (اگه lpt/usb باشه یه lpt مجازی و اگه serial/usb باشه یه سریال مجازی) درست میکنه . شما کافیه اسم یا آدرس اون پورت مجازی ایجاد شده رو ببینید و مثل یه پورت عادی براش برنامه بنویسید.(رایت کلیک روی mycomputer بعد انتخاب computer managment > device manager )
اگه خود ارتباط براتون مهم هست نه طریق ارتباط (serial , paralell)  با همون سریال کار کنید چون مزیتش خیلی بیشتر از پارالل هست. (تقریبا پارالل منسوخ شده) 
من با دلفی اصلا کار نکردم !  تو visual c , visual basic یه کامپوننت هست به اسم mscomm (فکرکنم) که کافیه اون کامپوننت رو به برنامتون اضافه کنید و مقدار baudrate , parity و سایر تنظیمات رو بهش بدید و بعد ازش استفاده کنید . تو این تاپیک یه سری اطلاعات کلی در مورد ارتباط سریال , موازی هست:
https://barnamenevis.org/showthread.php?t=183351
نمونه کد برای ارتباط سریال با دلفی توی اینترنت زیاده ، نمونش اینه (ip ایران رو قیلتر کرده ، باید با قیلتر شکن ببینید!):
http://mc-computing.com/languages/De...i_SerialIO.htm
اینم یه توضیحات کلی درمورد پورت سریال:
http://mc-computing.com/Languages/SerialIO.htm

----------


## farzadsw

راستی شاید اینم به دردتون بخوره:
http://www.planet-source-code.com/vb...d=295&lngWId=7

----------


## Modernidea

سلام

من لینکا هایی رو که دادید رو هم بررسی کردم اما متوجه نشدم که چطوری از یک USB2Paralell استفاده کنم.
وقتی درایور رو نصب میکنم فقط یک پورت USB درست میشه و هیچ پورت پاراللی توی Device Manager ساخته نمیشه.
از کجا شماره پورت رو پیدا کنم؟
ببنید این مشخصات این مبدلی هست که نصب میکنم:



موفق باشید

----------


## farzadsw

این درایور شما پورت پارالل مجازی درست نکرده ، اگر درست کنه به عنوان پورت lpt میشناستش و تو تب resources میشه آدرس رو دید . احتمالا باید از یه تبدیل دیگه استفاده کنید.

----------

