PDA

View Full Version : مطلب مفید در کورد برنامه نویسی سخت افزار به کمک ویژوال سی



hosseinzamani13677
یک شنبه 18 اردیبهشت 1390, 19:43 عصر
برنامه نویسی سخت افزار به کمک ویژوال سی
شاید تابحال خواسته باشید از طریق پورت پرینتر و یا پورت سریال یا باس ISA با سخت افزاری که خودتان ساخته اید ارتباط برقرار کنید . برای این کار شما نیاز به برنامه ای دارید که بوسیله دستورات I/O با سخت افزار شما ارتباط برقرار کند . چون ویژوال بیسیک دارای دستورات کار با پورتهای I/O نیست بایستی توسط ویژوال سی یک Dll برای کار با این پورتها بسازیم و تو وی بی فایل کامپایل شده رو به طور مشابه توابع آی پی آی به کار بگیرید.

DLL و کاربردهای آن


اگر شما در DOS برنامه نویسی کرده باشید با دستورات INPUT و OUPUT در زبان QuickBasic و با دستورات inp و outp در C آشنا هستید . این توابع در VB پیاده سازی نشده اند . این توابع برای سازندگان سخت افزار برای PC و نیز برنامه نویسان سیستم حیاتی هستند زیرا به شما اجازه خواندن از پورت و نوشتن به پورت را می دهند . برای ایجاد امکان استفاده ار پورت در VB باید از Dll یا کتابخانه های دینامیک استفاده کنیم . Dll ها به VB اجازه می دهند تا یک کد نوشته شده به یک زبان دیگر را در زمان اجرا ( بطور دینامیک ) به برنامه لینک شود . چون ویژوال سی دارای توابع خواندن و نوشتن پورت است بنابراین ما از این زبان برای ساخت Dll موردنظر استفاده می کنیم .
نوشتن DLL در VC
برای ساخت Dll ما بایستی دو فایل را ایجاد کنیم . اولین فایل یک فایل define یا DEF است و دومین فایل ، یک فایل C++ source یا CPP می باشد . هر دو فایل را می توانید توسط Notepad ایجاد کنید . لیست کد این دو فایل بصورت زیر است :
پس از نوشتن این دو فایل آنها را در یک دایرکتوری قرار دهید ( مثلاً C:port ) و سپس وارد محیط ویژوال سی شوید . از منوی File مورد New را انتخاب کنید و در کادری که ظاهر می شود در قسمت Projects مورد Win32 Dynamic-Link Library را انتخاب کنید . همچنین در سمت راست همان صفحه در کادر Project name عبارت port را وارد کنید و در کادر Location عبارت C:portport را وارد کنید و آنگاه OK را کلیک کنید .



Port.def file :

LIBRARY Port
DESCRIPTION DLL FOR I/O PORT
EXPORTS
Outp @1
Inp @2


Port.cpp file :

include "conio.h"x#
short _stdcall Outp(int PortAddress,int PortData){
short Dummy;
Dummy=(short)(_outp(PortAddress,PortData));
return(Dummy);
;}
short _stdcall Inp(int PortAddress)
{
short PortData;
PortData=(short)(_inp(PortAddress));
return(PortData);
;}


در مرحله بعدی بایستی فایل های def و cpp را به workspace ایجاد شده اضافه کنیم . برای اینکار در برگه FileView روی عبارت Port files کلیک راست کرده و مورد Add Files to Project را انتخاب کنید .




در کادری که ظاهر می شود فایل port.cpp را انتخاب کنید . با همین روش فایل port.def را نیز به پروژه اضافه نمائید .
حال وارد منوی Build شده مورد Build port.dll را انتخاب کنید تا dll مورد نظر ساخته شود .




dll ساخته شده را در دایرکتوری system ویندوزتان کپی کنید .
استفاده از Dll در ویژوال بیسیک
برای استفاده از توابع dll ساخته شده باید ابتدا توابع Out و In را declare کنید :

Private Declare Function Outp Lib "port.dll" (Byval PortAddress as Integer,Byval PortData as Integer) as Integer
Private Declare Function Inp Lib "port.dll" (Byval PortAddress as Integer) as Integer

حال در برنامه تان برای نوشتن به یک پورت از دستور زیر استفاده کنید :



Dummy=Outp(port_number,data)
و برای خواندن از پورت از دستور زیر استفاده کنید :

Portvalue=Inp(port_number)
.
...
منبع مطلب:Roboforum.ir (http://Roboforum.ir)
اگر به دردتون خورد،تشکر فراموش نشه:چشمک:

zxo003
دوشنبه 31 مرداد 1390, 21:50 عصر
اشتباه در مکان ارسال پسسسسسسسسست !!!