مقدمه
شاید تابحال خواسته باشید از طریق پورت پرینتر و یا پورت سریال یا
با سخت افزاري که خودتان ساخته اید ارتباط برقرار کنید . ISA باس
با I/O براي این کار شما نیاز به برنامه اي دارید که بوسیله دستورات
سخت افزار شما ارتباط برقرار کند . چون ویژوال بیسیک داراي
نیست بایستی توسط ویژوال سی یک I/O دستورات کار با پورتهاي
براي کار با این پورتها بسازیم . Dll
و کاربردهاي آن DLL
و INPUT برنامه نویسی کرده باشید با دستورات DOS اگر شما در
آشنا C در outp و inp و با دستورات QuickBasic در زبان OUPUT
پیاده سازي نشده اند . این توابع براي VB هستید . این توابع در
و نیز برنامه نویسان سیستم حیاتی PC سازندگان سخت افزار براي
هستند زیرا به شما اجازه خواندن از پورت و نوشتن به پورت را می
یا کتابخانه Dll باید از VB دهند . براي ایجاد امکان استفاده ار پورت در
اجازه می دهند تا یک کد VB ها به Dll . هاي دینامیک استفاده کنیم
نوشته شده به یک زبان دیگر را در زمان اجرا ( بطور دینامیک ) به
برنامه لینک شود . چون ویژوال سی داراي توابع خواندن و نوشتن
موردنظر استفاده Dll پورت است بنابراین ما از این زبان براي ساخت
می کنیم .
VC در DLL نوشتن
ما بایستی دو فایل را ایجاد کنیم . اولین فایل یک فایل Dll براي ساخت
می CPP یا source ++C است و دومین فایل ، یک فایل DEF یا define
ایجاد کنید . لیست کد Notepad باشد . هر دو فایل را می توانید توسط
این دو فایل بصورت زیر است :
: Port.def file
LIBRARY Port
DLL FOR I/O PORT DESCRIPTION
EXPORTS
Outp @1
Inp @2
: Port.cpp file
#include "conio.h"x
PortData)x short _stdcall Outp(int PortAddress,int
{
Dummy;x short
Dummy=(short)(_outp(PortAddress,PortData));x
return(Dummy);x
};
stdcall Inp(int PortAddress)x_ short
{
PortData;x short
PortData=(short)(_inp(PortAddress));x
return(PortData);x
};
پس از نوشتن این دو فایل آنها را در یک دایرکتوري قرار دهید ( مثلا مورد File و سپس وارد محیط ویژوال سی شوید . از منوي ( C:\port
Projects را انتخاب کنید و در کادري که ظاهر می شود در قسمت New
را انتخاب کنید . همچنین در Win32 Dynamic-Link Library مورد
را وارد port عبارت Project name سمت راست همان صفحه در کادر
را وارد کنید و آنگاه C:\port\port عبارت Location کنید و در کادر
را کلیک کنید . OK
!Error
ایجاد workspace را به cpp و def در مرحله بعدي بایستی فایل هاي
Port روي عبارت FileView شده اضافه کنیم . براي اینکار در برگه
را انتخاب کنید . Project Add Files to کلیک راست کرده و مورد files
را انتخاب کنید . با همین port.cpp در کادري که ظاهر می شود فایل
را نیز به پروژه اضافه نمائید . port.def روش فایل
dll را انتخاب کنید تا Build port.dll شده مورد Build حال وارد منوي
مورد نظر ساخته شود .
ویندوزتان کپی کنید . system ساخته شده را در دایرکتوري dll
در ویژوال بیسیک Dll استفاده از
را In و Out ساخته شده باید ابتدا توابع dll براي استفاده از توابع
کنید : declare
Private Declare Function Outp Lib “port.dll” (Byval PortAddress as Integer,Byval PortData as Integer) as Integer Function Inp Lib “port.dll” (Byval Private Declare PortAddress as Integer) as Integer
حال در برنامه تان براي نوشتن به یک پورت از دستور زیر استفاده
کنید :
Dummy=Outp(port_number,data)x
و براي خواندن از پورت از دستور زیر استفاده کنید :
Portvalue=Inp(port_number)x
در dll و یک برنامه نمونه استفاده از این port.dll نکته : براي دریافت
ویژوال بیسیک ، در بخش نظر خواهی آدرس ایمیل خود را بگذارید .
و برنامه نویسی آن در ویژوال بیسیک Parallel پورت
تذکر : در مقاله هاي قبلی بخشی تحت عنوان " برنامه نویسی سخت
افزار در ویژوال بیسیک " نوشتم که در آن روشی براي دسترسی به
پورتها از طریق ویژوال بیسیک ذکر شد . لازم به تذکر است که این روش
تنها در ویندوزهاي 95 و 98 امکان پذیر است .
( Parallel ) مبانی پورت موازي
پورت پارالل استاندارد کامپیوتر یک درگاه 25 پینی است که 12 پین آن
DATA ) خروجی می باشد . از این 12 خط ، 8 خط بعنوان داده خروجی
می باشند . 5 ( CONTROL Port ) و 4 خط بعنوان خط کنترل ( Port
( STATUS Port ) پین نیز ورودي بوده و بعنوان خطوط وضعیت
استفاده می شوند .
هستند . ( GROUND ) 8 پین باقیمانده نیز زمین
که هرکدام متناظر با یکی از I/O خطوط پورت پارالل توسط سه آدرس
سه پورت داده ، کنترل و و ضعیت است قابل دسترسی می باشند .
( LPT می باشد ( 1 x آدرس پایه پورت پارالل در اکثر کامپیوترها 3780
status براي پورت ، x براي پورت داده برابر 3780 I/O . بنابراین آدرس
می باشد . x37A برابر 0 command و براي پورت x برابر 3790
و ECP پورت پارالل استاندارد داراي دو حالت توسعه یافته به نامهاي
نیز می باشد . EPP
بوسیله پورت پارالل می توانید مدارهاي جانبی خود را به کامپیوتر
متصل کنید . تنها نکته اي که در این بین وجود دارد چگونگی برنامه
نویسی پورت پارالل و در نتیجه برقراري ارتباط با مدار جانبی است .
براي اطلاعات بیشتر در این زمینه با من تماس بگیرید .
برنامه نویسی پورت پارالل در محیطهاي مختلف ویندوز
می توان به dll با استفاده از این : Inpout32.dll استفاده از کتابخانه
دسترسی داشت Win 9x/NT/2000/XP پورتهاي سیستم در محیطهاي
.
dll به این آدرس مراجعه کنید . براي استفاده از این dll براي دریافت این
ویندوزتان کپی کنید . سپس System کافی است آنرا در دایرکتوري 32
یک ماژوال به پروژه تان اضافه کرده و عبارت زیرا را در آن قرار دهید :
Public Declare Function Inp Lib "inpout32.dll" Alias
Inp32" (ByVal PortAddress As Integer) As Integer"
inpout32.dll" Alias "Out32" " Public Declare Sub Out Lib
Integer)x (ByVal PortAddress As Integer, ByVal Value As
حال براي مثال با دستور زیر می توانید اطلاعاتی را روي پینهاي
ي مربوط به پورت پارالل بنویسید : DATA
H378, your_data)x&)Call Out
آشنایی با شی پرینتر در ویژوال بیسیک 6
مقدمه
شی پرینتر ، شیی است که پرینتر پیش فرض سیستم را کنترل می کند .
استفاده از شی پرینتر در ویژوال بیسیک 6 مانند کار با سایر اشیا است
و بایستی از خواص و متدهاي آن استفاده کرد . در ادامه با برخی از این
خواص و متدها آشنا خواهید شد .
چاپ متن توسط شی پرینتر
و CurrentX براي چاپ متن توسط شی پرینتر کافیست خواص
که محل قرار گرفتن کرسر می باشد را تنظیم نوده و سپس CurrentY
متن مورد نظر را چاپ نموده و در پایان با Print با استفاده از متد
صفحه چاپی را از پرینتر بیرون بدهیم . مثال : EndDoc استفاده از متد
Printer.CurrentX=150
Printer.CurrentY=200
Printer.Print "Visual Basic Printer Object Test"
Printer.EndDoc
قرار داده شده Pixel برابر ScaleMode در مثال فوق فرض شده که
عمل چاپ EndDoc است . توجه داشته باشید که تا قبل از اجراي متد
انجام نمی شود و فقط بعد از این متد است که چاپ انجام شده و کاغذ
بیرون می آید .
دیگري را استفاده کنیم متن Print دستور ، Print اگر پس از یک دستور
روي خط بعدي چاپ خواهد شد . اگر بخواهیم متن بلافاصله بعد از متن
اول از علامت ; استفاده کنیم . Print اول چاپ شود باید بعد از دستور
استفاده CurrentY و CurrentX نکته : براي کنترل دقیق محل چاپ از
نمائید .
چاپ گرافیک توسط شی پرینتر
به 4 روش می توان اشکال گرافیکی را توسط شی پرینتر چاپ کنید :
می توان یک دایره ، قوس و یا Circle 1 – چاپ دایره : با استفاده از متد
بیضی را در صفحه چاپ کرد . فرمت کلی این متد بصورت زیر است :
Circle (x,y),radius,[color],[start],[end],[aspect]
شعاع آن می باشد . radius مختصات مرکز دایره و y و x که
اختیاري هستند و بترتیب aspect و end ،start ،color پارامترهاي
رنگ ، محل شروع قوس ، محل خاتمه قوس و نسبت شعاع بیضی را
نشان می دهند .
می توان یک خط و مستطیل را در Line 2 – چاپ خط : با استفاده از متد
صفحه چاپ کرد . فرمت کلی این متد بصورت زیر است :
Line (x1,y1)-(x2,y2),[color],[B[F]]
مختصات y و 2 x مختصات شروع خط ( یا مستطیل ) و 2 y و 1 x که 1
انتهاي خط ( یا مستطیل ) هستند .
اختیاري بوده و رنگ خط ( یا مستتطیل ) را نشان می دهد color پارامتر
.
اختیاري بوده و نشان می دهد یک مستیل رسم شود . B پارامتر
می آید و نشان می دهد یک مستطیل B اختیاري بوده و بهمراه F پارامتر
توپر رسم شود .
می توان نقطه اي روي صفحه PSet 3 – چاپ نقطه : با استفاده از متد
چاپ کرد و فرمت کلی آن بصورت زیر است :
PSet (x,y),[color]
مختصات نقطه می باشند . y و x که
اختیاري بوده و رنگ نقطه را نشان می دهد . color پارامتر
می توان محتویات PaintPicture 4 – چاپ تصویر : با استفاده از متد
یک فایل گرافیکی را چاپ کرد . فرمت کلی این متد بصورت زیر است :
Printer.PaintPicture picture, x1, y1, [width1], [height1], [x2], [y2], [width2], [height2], [opcode]
یک picture مختصات قرارگرفتن تصویر در صفحه بوده و y و 1 x1
است . این شی را می توان از یک IPictureDisp شی از کلاس
فرم گرفت و یا از دستور Picture یا از خاصیت PictureBox
استفاده کرد . LoadPicture
: مثال 1
Printer.PaintPicture Picture1.Picture, 100, 100
: مثال 2
PaintPicture LoadPicture("C:\sample.jpg"), 100, 100
y و 2 x طول و عرض تصویر چاپی می باشند . 2 height و 1 width1
می توانند میزان برش از تصویر اصلی height و 2 width نیز بهمراه 2
براي چاپ را مشخص کنند .
سایر خواص مهم شی پرینتر
اگر پرینتر رنگی باشد ، رنگی یا تک رنگ بودن چاپ را : ColorMode
تعیین می کند .
تعداد چاپ را مشخص می کند . : Copies
نوع فونت چاپ متن را مشخص می کند . : Font
سایز فونت چاپ متن را مشخص می کند . : FontSize
کیفیت چاپ را مشخص می کند . : PrintQuality
سایر متدهاي مهم شی پرینتر
پرینت در حال چاپ را از صف چاپ حذف می کند . : KillDoc
صفحه جاري را به پایان برده و صفحه جدیدي را براي : NewPage
چاپ آماده می کند .
سیستم مختصات کاربر را تعیین می کند . : Scale
را Scale ارتفاع متن پس از چاپ شدن در مختصات : TextHeight
تعیین می کند .
را Scale عرض متن پس از چاپ شدن در مختصات : TextWidth
تعیین می کند .
اميدوارم اين مطلب آموزشي مفيد باشه براتون
روزگار خوش