ايران ويج

نسخه‌ی کامل: ارتباط با پورت پارالل در دلفی
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
این مقاله نسبتا کاملی در مورد
اشنایی با پارالل
برنامه نویسی و ارتباط با این پورت
روشن کردن led با پورت پارالل
استفاده از بافر برای محافظت از پورت
+
ضمیمه
سورس مثالها
در 12 صفحه

کد:
http://rapidshare.com/files/380087816/port_paralel.rar
600کیلو را همینجا حجی ضمیمه میکردی این راپیدشیر بعد از یه مدت فایلها را حذف میکنه ، حیفس Biggrin
یک سوال در مورد ULN2803 فرضا من قصد داشته باشم روی یکی از پایه ها پالس بدم بیرون ( فقط خروجی ) گیرنده ای هم دارم مه پالس در یافت میکند ، نحوه برقراری ارتباط + چطوری میشه ؟
پایه شماره 10 این آی سی چیکاره هست ؟
(۲۰-اردیبهشت-۱۳۸۹, ۱۶:۲۳:۵۸)joker نوشته است: [ -> ]یک سوال در مورد ULN2803 فرضا من قصد داشته باشم روی یکی از پایه ها پالس بدم بیرون ( فقط خروجی ) گیرنده ای هم دارم مه پالس در یافت میکند ، نحوه برقراری ارتباط + چطوری میشه ؟
پایه شماره 10 این آی سی چیکاره هست ؟

سلام جوکر جان اگه سوال داری تاپیک جدید باز کن اینجا فقط جای قرار دادن مقالاته
(۲۰-اردیبهشت-۱۳۸۹, ۱۶:۵۲:۱۳)HoseinVig نوشته است: [ -> ]
(۲۰-اردیبهشت-۱۳۸۹, ۱۶:۲۳:۵۸)joker نوشته است: [ -> ]یک سوال در مورد ULN2803 فرضا من قصد داشته باشم روی یکی از پایه ها پالس بدم بیرون ( فقط خروجی ) گیرنده ای هم دارم مه پالس در یافت میکند ، نحوه برقراری ارتباط + چطوری میشه ؟
پایه شماره 10 این آی سی چیکاره هست ؟

سلام جوکر جان اگه سوال داری تاپیک جدید باز کن اینجا فقط جای قرار دادن مقالاته
من نگاه نکردم ببینم کجاست :) دیدم مربوط به این پست بود دیگه همینجا ریپلای کردم :)
در مورد خود مقاله ، به نظرم سمپل موجود توی مقاله اشتباه داره
یعنی طبق قسمتی که توی مقاله اومده قاعدتا با ارسال عدد 4 باید پین شماره 2 پورت روشن بشه که این اتفاق نمی افته
خب من مشکل دسترسی درست به پینهای پورت پرینتر را اینطوری حل کردم ( تکمیل مثال همراه مقاله : port_lpt )
اول یک متغییر عمومی در نظر گرفتم به این شکل:
کد:
var
Form2: TForm2;
OldVludeonPort:string = '00000000';
بعد یک فانکشن نوشتم به این شکل :
کد:
function PinMaker(Pin:integer):string;
var
STB:array [1..8] of char;
begin
9:OldVludeonPort[1]:='1' ;
8:OldVludeonPort[2]:='1' ;
7:OldVludeonPort[3]:='1' ;
6:OldVludeonPort[4]:='1' ;
5:OldVludeonPort[5]:='1' ;
4:OldVludeonPort[6]:='1' ;
3:OldVludeonPort[7]:='1' ;
2:OldVludeonPort[8]:='1' ;
end;
که ورودی اون شماره پین بود ( پینهای 2 الی 9 پورت پارالل که خروجی این پورت هستند)

خب توی برنامه هم مثلا برای روشن کردن پایه های 3-4-8 اینطوری نوشتم :

کد:
PinMaker(3);
PinMaker(4);
PinMaker(8);


OutPortB ( $378,BinToByte(OldVludeonPort) );
sleep(100);
OldVludeonPort := '00000000';
OutPortB ( $378,BinToByte(OldVludeonPort) );


پیوست : از بچگی کلا با بیت و بایت و محاسباتشون مشکل داشتم :(
عرضم به حضورتون که مثالی که با استفاده از ring0 نوشته شده در حلقه های for موقع ارسال پالس ، منجر به کرش کردن سیستم عامل میشد گاهی ( xp Sp3 )
از همون مثال اول که با استفاده از dll inpout32.dll بود استفاده کردم و مشکلی هم در کار کردن زیاد نداشت

فایل ضمیمه یک فروند کنترلر سه محوره cnc هست که به واسطه این مقاله نوشته شده است( با تشکر ویژه از جناب Lord_viper )
( برای تستهای اولیه ساخت cnc میتونید ازش استفاده کنید، یادگاری )

محور x : پین های 2-3 _ شماره 2 پالس ، شماره 3 تعیین جهت
محور y : پینهای 4- 5 _ شماره 4 پالس ،شماره 5 تعیین جهت
محور z : پینهای 6-7 - شماره 6 پالس ، شماره 7 تعیین جهت