منو
 کاربر Online
1064 کاربر online
Lines: 1-11Lines: 1-201
-در این برنامه از دو پورت سریال (COM) استفاده شده است شما می توانید هر دو برنامه را با هم اجرا کنید یا هر کدام را به صورت مجزا دقت داشته باشید
در صورتیکه شما برنامه مربوط به پورت سریال 1 را اجرا کنید در صورتیکه المان دیگری مثل موس (Mouse) در این پورت باشد با پیغامی تحت عنوان پورت در دسترس نیست مواجه می شوید .این امر در مورد پورت 2 نیز صادق است
+V{maketoc}
دراین برنامه از دو پورت سریال (COM) استفاده شده است شما می توانید هر دو برنامه را با هم اجرا کنید یا هر کدام را به صورت مجزا دقت داشته باشید />





{picture=9_pin.jpg}



در صورتیکه شما برنامه مربوط به پورت سریال 1 را اجرا کنید.والمان دیگری مثل موس (Mouse) در این پورت باشد با پیغامی تحت عنوان پورت در دسترس نیست مواجه می شوید .این امر در مورد پورت 2 نیز صادق است.دقت داشته باشید این برنامه در ویندوز های با FAT32 اجرا می شود.
 حال نحوه کد نویسی برنامه را با هم بررسی میکنیم  حال نحوه کد نویسی برنامه را با هم بررسی میکنیم
 +!کد نویسی بدنه اصلی برنامه
 +به سراغ Private Form Load در خط 52 میرویم. .پارامترهای داخل این عبارت
 +اشاره به مسایلی میکند که در هنگام اجرای اولیه برنامه Load می شوند. با یک دستور شرطی If اگر پورت سریال در اتصال به چیز دیگری مثل موس باشد با ارسال پیغام COM unavailabld کاربر را از این قضیه مطلع می سازد. در این قسمت همچنین دو عبارت DTR,RTS را مشاهده می کنید .اینها بیتهای ارسال RS232 هستند که در هنگام Load برنامه هر دو مقدار یک را دارند. اگر در هنگام Load برنامه تغذیه آیسی و موتور پله ای وصل باشد متوجه حرکت کوچکی در موتور پله ای می شوید.که این به خاطر مقدار دهی DTR,RTS در هنگام Load برنامه است .
 +در قسمت Private Command1_Clickدو متغییر i,U با مقادیر وارد شده توسط کاربر مقداردهی می شو ند. یکی مربوط به تعداد پله ودیگری مربوط به شمارش پله موتور پله ای
 +پس از اجرا متوجه می شوید text مربوط به تعداد پله غیر فعال است .با کلیک بر روی Check Box بالای تعداد پله این text فعال می شود وشما مثلا در آن عدد 1000 را وارد کنید وسپس کلید شروع را بزنید. شمارش پله بعد از هر 30میلی ثانیه (30 میلی ثانیه در واقع فاصله بین هر پالس است.این عبارت در ُسابروتین Output قرار دارد وشما می توانید فاصله پالسها وسرعت موتور پله ای را با تغییر این پارامتر مطابق میل خودتان تنظیم کنید) یکی یکی اضافه می شود تا به مقدار 1000 که مقدار تعیین شده درtext تعدادپله توسط شما است برسد .در این پروژه تعداد دورهای موتور پله ای نیز در صورت تمایل شما با فعال کردن Check Box سمت راست بالای صفحه هم به صورت نهایی و هم به صورت لحظه به لحظه نشان داده می شود.پس از توضیح خلاصه از نحوه عملکرد برنامه سراغ کلید شروع می رویم .در انتهای سابروتین مربوط به Command1
 +در خط 27 به سابروتین Output اشاره شده است.در این سابروتین در خط 58 با رستور While بر خورد می کنید.
 +در دستور While گفته شده تا زمانیکه مقدار تعداد پله با شمارش پله یکی نشده در حلقه While بمان و آنقدر مقدار شمارش پله را کم وزیاد بکن تا به مفدار تعدادپله برسد.فا صله زمانی بین هر دو پالس نیز در دستور While TimeREADدر خط 71 وجود دارد.دراین کد برنامه هر بار که مقدار تعداد پله با شمارش آن متفاوت باشد
 +به آن مقدار یک را اضافه می کند.سپس باقیمانده تقسیم صحیح شمارش پله بر عدد 4 را در متغییر Phase می ریزد. و بر حسب اینکه این حاصل تقسیم 0و1و2و3 باشد به سابروتینهایPhase 1,Phase 2,Phase3 Phase 4 میرود.ودر اینجا بیتهای DTR,RTS را یک و صفر می شوند.البته این نحوه 0و1 کردن بیتها بر مبنای تحریک ((موتور پله ای|دوبیتی)) سیم پیچهای موتور پله ای است .که می بایست در هر لحضه دو سیم پیچ به توالی 1و0 شوند بقیه کد های برنامه بسیار ساده است .وتنها جهت آموزشی شدن برنامه ارایه شده است مثل برنامه نویسی محاسبه تعداد دور یا حرکت عکس موتور پله ای در حالت عکس حرکت موتور پله ای که کد آن در خط 30 وجود دارد مقادیر شمارش پله با مقادیر حرکت پله جابجا می شود.در این حالت موتور در حالت عکس حرکت فعلیش می چرخد.شما به جای RTS می توانید از TXD نیز استفاده کنید.
 +در ضمن زمانیکه دکمه توقف را کلیک کنید.پورت سریال مربوطه بسته می شود.وبا صفر کردن مقادیر U,i شما حتی در حالت نرم افزاری هم متوقف می شوید.کد این قسمت از برنامه در خط
 +جهت اجرا کردن این برنامه در کامپیوتر کدهای ((پروژه کنترل موتور پله ای توسط کامپیوتر|DLL)) مورد نیاز این برنامه را در دارکتوری system ویندوز کپی کنید.
-در قسمت سمت راست صفحه ویژوآل بیسیک بر روی گزینه Form کلیک کنید تا آبی شود سپس از منوی View گزینه Code را کلیک کنید و وارد کد برنامه شوید .در ابتدای برنامه متوجه دو متغیر U,i می شوید که به صورت Integer معرفی ده اند. سراغ Private Form Load میرویم .پارامترهای داخل این عبارت
اشاره ه میلی میکن ک در نگ اجرای الیه برنامه Load می شد. با یک دستور ی If ار پرت سریا ر اتال چی یگی ثل موس باد با ارسا پیام COM unavailabld کاربر را از این قضیه مطلع می سازد. در ای قسمت مچنی دو عبارت DTR,RTS را ماهده میکی .اینها بیتهای ارسال RS232 هستند که در هنگام Load برنامه هر دو مقدار یک را دارند. اگر در هنگام Load برنامه تغذیه آیسی و موتور پله ای وصل باشد متوجه حرکت کوچکی در موتور پله ای می شوید.که این به خاطر مقدار دهی DTR,RTS در هنگام Load برنامه است .اگر از منوی View گزینه Object را انتخاب کنید وسپس بر روی
کلید شروع کلیک کنید وارد قسمت کد نویسی این دکمه کنترلی می شوید.در اینجا دو مقدار Text3,text6 که هر کدام با برچسبی درObject کنارشان توضیح داده شده است. یکی تعدا پله ودیگری شمارش پله در قسمت شکل یا فرم برنامه پس از اجرا متوجه می شوید text مربوط به تعداد پله غیر فعال است .با کلیک بر روی Check Box بالای تعداد پله این text فعال می شود وشما مثلا در آن عدد 1000 را وارد کنید وسپس کلید شروع را بزنید. شمارش پله بعد از هر 30میلی ثانیه (3 میلی ثانیه در واقع فاصله بین هر پالس است.این عبارت در ُسابروتین Output قرار دارد وشما می توانید فاصله پالسها وسرعت موتور پله ای را با تغییر این پارامتر مطابق میل خودتان تنظیم کنید) یکی اضافه می شود تا به مقدار 1000 که مقدار تعیین شده درtext تعدادپله توسط شما است برسد .در این پروژه تعداد دورهای موتور پله ای نیز در صورت تمایل شما با فعال کردن Check Box سمت راست بالی صفحه هم به صورت نهایی و هم به صورت لحظه به لحظه نشان داده میشود.پس از توضیح خلاصه از نحوه عملکرد برنامه سراغ کلید شروع می رویم .برای متوقف کردن برنامه از منوی Run گزینه Stop را انتخاب کنید وسپس بر ی کلید شروع کیک کنی ورد کد برنام شید اتهای کد مربوط به این کلید ه ساروتی Output ااره شده است.
در دستور While گ
ف شده تا زمانیکه مقدار تعداد له ا شارش پله یکی نده در حقه While ما و آنقدر قار شما پله را کم وزید بک تا ه مفار عدادپله برسد..ا له زمانی بین هر د پاس یز ستر While TimeREAD دارد .دراین کد برنامه ه ار ک مقدا تعداد پله با شمارش آن تفاوت باشد
ه آن مقار یک ر اضاه می کند. بایمنه تسیم حیح شمارش له ر عدد 4 را ر متغییر Phase می ریزد. و بر سب اینک ای اصل قسیم 1و23 باشد ب ابرتینهایPhase 1,Phase 2,Phase3 Phase 4 می.ودر اینجا بیتهای DTR,RTS ا یک و صفر می کند.الته ین نوه 0و1 کردن یمه ر مبنای تحریک دوبیتی سیم یهای موتو پله ی ا می بایت در ر لضه دو یم پیچ به توالی 1و0 ون قیه ک های بناه سیار ساده است .وتنها جهت آموزشی شدن برامه ارای شده ست مل برنامه نویی حاسبه تعداد دور یا حرک عکس موتور پله ی
جهت
ارا دن این برم ر کامپوتر کدهای DLL زیر را ر folder ی یو کی کید.
+ align=left dir=ltr> />{CODE(ln=>1, colors=>php| highlights| phpcode)} /> /> />Private Sub Check1_Click() /> If Check1.Value = 1 Then
Text3.Enabled = True /> Else /> Text3.Enabled = False /> End If />End Sub /> />Private Sub Check2_Click()
If Check2.Value = 1 Then
Label15.Cap
tion = Left((Text1.Text * Text3.Text) / 360, 6)r /> Else
Label15.Caption =
"عداد ر" /> End If
End Sub

Private Sub Command1_Click()
i = Val(Text3.Text)
U = Val(Text6.Text)
If Check2.Value = 1 Then
Label15.Caption = Left((Text1.Text * Text3.Text) / 360, 6)
OPENCOM ("COM2:9600,N,8,1")
If i = U Then MsgBox "
هت ک ر له ای دار ا په را فاوت ا له واد کی", vbInformation<br /> Text7 = Text1
Output
En
d Sub /> />Private Sub Command2_Click() /> If Command1.Caption = "ستی" Then /> Command1.Caption = "مک"
Z = Text3.Text /> Text3.Text = Text6.Text /> Text6.Text = Z /> Call Command1_Click /> Else /> /> Z = Text6.Text
Text6.Text = Text3.Text
Text3.Text = Z
Call Command1_Click />End If />End Sub /> />Private Sub Command3_Click()
CL
OSECOM<br /> U = 0
i = 0
End Sub

Priva
te Sub Form_Load() /> i = 0: U =
DTR 1 /> RTS 1 />End Sub
Sub
Output() /> While i <> U /> If Check2.Value = 1 Then Label16.Caption = Left((Text6.Text * Text7.Text) / 360, 5) /> If Check1.Value = 1 Then Check1.Enabled = True /> If i > U Then U = U + 1 /> If i < U Then U = U - 1
Tex
t6.Text = Str$(U) /> Phase = U Mod 4
If Phase < Then Phase = Phase + 4 /> If Phase = 0 Then Phase1 /> If Phase = 1 Then Phase2 /> If Phase = 2 Then Phase3 /> If Phase = 3 Then Phase4 /> TIMEINIT /> While TIMEREAD < 30 /> DoEvents /> Wend /> Wend />End Sub />Sub Phase1() /> DTR 1 /> RTS 1 /> Text4.Text = "1" /> Text5.Text = "1" /> End Sub />Sub Phase2() /> DTR 1 /> RTS 0 /> Text4.Text = "1" /> Text5.Text = "0" /> End Sub />Sub Phase3() /> DTR 0 /> RTS 0 /> Text4.Text = "0" /> Text5.Text = "0" />End Sub />Sub Phase4() /> DTR 0 /> RTS 1 /> Text4.Text = "0" /> Text5.Text = "1"
E
nd Sub
/>Private Sub Form_Unload(Cancel As Integer)
CLOSECOM />End Sub
{CODE}


/>
!
کد نویسی Module برنه />در module برنام فایهای ((API)) ویندو اتاه شده است یهای API در وا ایلهای رم ویند ا ه برنامه نوی ا ه الا برد کاایی برا در برنامه هی د اتفاده می کند.
نوه مرفی کر API د زبا رنمه ویی متفا ات .در بان یژل یسیک حو ری API ورت یر ات. />د بارت Declare Function نام تبع API , پ ا عبات Lib ی ویم.Lib بین کاباه ی است که این ای dll د ن ود دار پ ا ن ن مغییر ورودی یا روی و آ ص ی شد.
   
 +
 +{CODE(ln=>1, colors=>php| highlights| phpcode)}
 +Declare Sub CLOSECOM Lib "Port" ()
 +Declare Sub SENDBYTE Lib "Port" (ByVal b%)
 +Declare Function READBYTE Lib "Port" () As Integer
 +Declare Sub DTR Lib "Port" (ByVal b%)
 +Declare Sub RTS Lib "Port" (ByVal b%)
 +Declare Sub TXD Lib "Port" (ByVal b%)
 +Declare Function CTS Lib "Port" () As Integer
 +Declare Function DSR Lib "Port" () As Integer
 +Declare Function RI Lib "Port" () As Integer
 +Declare Function DCD Lib "Port" () As Integer
 +Declare Sub DELAY Lib "Port" (ByVal b%)
 +Declare Sub TIMEINIT Lib "Port" ()
 +Declare Sub TIMEINITUS Lib "Port" ()
 +Declare Function TIMEREAD Lib "Port" () As Long
 +Declare Function TIMEREADUS Lib "Port" () As Long
 +Declare Sub DELAYUS Lib "Port" (ByVal l As Long)
 +Declare Sub REALTIME Lib "Port" (ByVal i As Boolean)
 +Declare Sub OUTPORT Lib "Port" (ByVal A%, ByVal b%)
 +Declare Function INPORT Lib "Port" (ByVal p%) As Integer
 +Declare Function JOYX Lib "Port" () As Long
 +Declare Function JOYY Lib "Port" () As Long
 +Declare Function JOYZ Lib "Port" () As Long
 +Declare Function JOYW Lib "Port" () As Long
 +Declare Function JOYBUTTON Lib "Port" () As Integer
 +Declare Function SOUNDSETRATE Lib "Port" (ByVal Rate%) As Integer
 +Declare Function SOUNDGETRATE Lib "Port" () As Integer
 +Declare Function SOUNDBUSY Lib "Port" () As Boolean
 +Declare Function SOUNDIS Lib "Port" () As Boolean
 +Declare Sub SOUNDIN Lib "Port" (ByVal Puffer$, ByVal Size%)
 +Declare Sub SOUNDOUT Lib "Port" (ByVal Puffer$, ByVal Size%)
 +Declare Function SOUNDGETBYTES Lib "Port" () As Integer
 +Declare Function SOUNDSETBYTES Lib "Port" (ByVal b%) As Integer
 +Declare Sub SOUNDCAPIN Lib "Port" ()
 +Declare Sub SOUNCAPDOUT Lib "Port" ()
 +{CODE}
 +
 +module فوق یک ((module)) کلی است.و در خیلی از برنامه های دیگر جواب می دهد.برای این برنامه شما میتوانید از module زیر که ساده شده module فوق می باشد استفاده کنید.همانطور که ملا حظه می کنید تنها از فایل ((API)) مربوط به باز کردن وبستن پورت وبیتهای DTR,RTS وعبارات مربوط به فاصله زمانیها استفاده شده است
 +
 +{CODE(ln=>1, colors=>php| highlights| phpcode)}
 +Declare Function OPENCOM Lib "Port" (ByVal A$) As Integer
 +Declare Sub CLOSECOM Lib "Port" ()
 +Declare Sub DTR Lib "Port" (ByVal b%)
 +Declare Sub RTS Lib "Port" (ByVal b%)
 +Declare Sub DELAY Lib "Port" (ByVal b%)
 +Declare Sub TIMEINIT Lib "Port" ()
 +Declare Sub TIMEINITUS Lib "Port" ()
 +Declare Function TIMEREAD Lib "Port" () As Long
 +Declare Function TIMEREADUS Lib "Port" () As Long
 +Declare Sub DELAYUS Lib "Port" (ByVal l As Long)
 +{CODE}
 +
 +!دانلود Sorce برنامه به زبان VB
 +برای دانلود Source برنامه__ [http://217.218.177.31/mavara/mavara-download_file.php?fileId=128|اینجا]__ را کلیک کنید
 +این برنامه مربوط به پورت سریال 1 است.برای انجام این برنامه برای پورت سزیال 2 کافی است در Source برنامه به جای com1 عبارت com2 را قرار دهید.
 +!همچنین ببینید
 +((فهرست پروژه های الکترونیک))

تاریخ شماره نسخه کاربر توضیح اقدام
 سه شنبه 04 بهمن 1384 [08:58 ]   23   جواد حمزه      جاری 
 چهارشنبه 31 فروردین 1384 [10:32 ]   22   جواد حمزه      v  c  d  s 
 سه شنبه 30 فروردین 1384 [06:02 ]   21   جواد حمزه      v  c  d  s 
 سه شنبه 30 فروردین 1384 [05:56 ]   20   جواد حمزه      v  c  d  s 
 سه شنبه 30 فروردین 1384 [05:41 ]   19   جواد حمزه      v  c  d  s 
 سه شنبه 30 فروردین 1384 [04:47 ]   18   جواد حمزه      v  c  d  s 
 سه شنبه 30 فروردین 1384 [04:35 ]   17   جواد حمزه      v  c  d  s 
 دوشنبه 29 فروردین 1384 [13:19 ]   16   جواد حمزه      v  c  d  s 
 دوشنبه 29 فروردین 1384 [13:16 ]   15   جواد حمزه      v  c  d  s 
 دوشنبه 29 فروردین 1384 [13:00 ]   14   جواد حمزه      v  c  d  s 
 دوشنبه 29 فروردین 1384 [12:49 ]   13   جواد حمزه      v  c  d  s 
 دوشنبه 29 فروردین 1384 [12:11 ]   12   جواد حمزه      v  c  d  s 
 دوشنبه 29 فروردین 1384 [11:38 ]   11   جواد حمزه      v  c  d  s 
 دوشنبه 29 فروردین 1384 [10:58 ]   10   جواد حمزه      v  c  d  s 
 دوشنبه 29 فروردین 1384 [10:43 ]   9   جواد حمزه      v  c  d  s 
 دوشنبه 29 فروردین 1384 [10:32 ]   8   بابک خسروشاهی      v  c  d  s 
 دوشنبه 29 فروردین 1384 [10:24 ]   7   جواد حمزه      v  c  d  s 
 دوشنبه 29 فروردین 1384 [08:17 ]   6   جواد حمزه      v  c  d  s 
 دوشنبه 29 فروردین 1384 [05:50 ]   5   بابک خسروشاهی      v  c  d  s 
 دوشنبه 29 فروردین 1384 [05:36 ]   4   بابک خسروشاهی      v  c  d  s 
 دوشنبه 29 فروردین 1384 [05:16 ]   3   جواد حمزه      v  c  d  s 
 یکشنبه 28 فروردین 1384 [20:28 ]   2   جواد حمزه      v  c  d  s 
 یکشنبه 28 فروردین 1384 [20:28 ]   1   جواد حمزه      v  c  d  s 


ارسال توضیح جدید
الزامی
big grin confused جالب cry eek evil فریاد اخم خبر lol عصبانی mr green خنثی سوال razz redface rolleyes غمگین smile surprised twisted چشمک arrow



از پیوند [http://www.foo.com] یا [http://www.foo.com|شرح] برای پیوندها.
برچسب های HTML در داخل توضیحات مجاز نیستند و تمام نوشته ها ی بین علامت های > و < حذف خواهند شد..