تبلیغات
مرکز دانلود کتاب الکترونیک در زمینه ی کامپیوتر و الکترونیک - ارتباط سریال کامپیوترو میکرو کنترولر با استفاده از vb , vc++
مرکز دانلود کتاب الکترونیک در زمینه ی کامپیوتر و الکترونیک
وب لاگ تخصصی دانلود و اموزش
گروه طراحی قالب من گروه طراحی قالب من گروه طراحی قالب من گروه طراحی قالب من گروه طراحی قالب من
درباره وبلاگ


کاردانی کامپیوتر (گرایش برنامه نویسی و تولید نرم افزار) -مهارت های کاری :تکنسین شبکه های محلی و بیسیم (دارای مدرک سازمان فنی و حرفه ای ) -برنامه نویسی -طراحی سایت -گرافیک کامپیوتر-
هدف از این مطالب جلب توجه نیست بلکه قصد من کمک به دوستانی است که در این زمینه ها مشکل دارند بنابرین دوستان عزیز در صورتی که مشکلی در مورد هر یک از مباحث کامپیوتر البته فعلا فقط تا کاردانی دارید با بنده مطرح کنید تا در اولین فرصت به شما کمک کنم


مدیر وبلاگ : milad rasuolly
نویسندگان
نظرسنجی
امتیازی که به این وبلاگ خواهید داد.






 

VC++ و VB ارتباط سریال كامپیوتر و میكروكنترلر با استفاده

مقدمه:

در این مقاله سعی در تشریح چگونگی كار با پورت سریال و ایجاد ارتباط بین دو

كامپیوتر و یا كامپیوتر و میكروكنترلر را داریم.

همچنین چگونگی ارتباط با مودم و انتقال اطلالالالاعات از طریق آن بررسی شده است . در

استفاده ACTIVEX و یا كنترل های  API برای ارتباط با روالهای VB اینجا ما از

نیز صادق VC++ كرده ایم كه البته توضیحات ذكر شده در زبانهای دیگری مانند

میباشد .كه به تشریح آن خواهیم پرداخت

در این مقاله سعی در تشریح چگونگی كار با پورت سریال كامپیوتر و ارتباط آن با كامپیوترهای دیگر و یا با

میكروكنترلر را داریم.

برای ارتباط با روالهای VB همچنین چگونگی ارتباط با مودم و انتقال اطلاعات از طریق آن بررسی شده است . در اینجا ما از

VC++ استفاده كرده ایم كه البته اكثر توضیحات ذكر شده در زبانهای دیگری مانند ACTIVEX و یا كنترل های API

نیز صادق میباشد .كه به تشریح آن خواهیم پرداخت .

نامیده میشوند . و هر Com١,Com٢,Com هر كامپیوتر دارای تعدادی پورت سریال میباشد كه به ت رتیب به نامهای ,, ٣

و اسكنر به COM كدام ممكن است كه برای ارتباط با وسیله خاصی در نظر گرفته شود . مثلا’ ممكن است موش به ١

متصل شود . پورت PC و هر دستگاه سریال دیگری نیز به همین صورت بروی یكی از پورتهای سریال نصب شده در COM٢

به روش سریال نمونه ای از نحوه ’ ارتباط I/O. سریال كانالی برای انتقال اطلاعات و دریافت آن به صورت بیت به بیت است

بین دو وسیله استفاده می شود این روش (ONE TO ONE) حمایت شده توسط ویندوز است این روش هنگام ارتباط

میتواند با استفاده از كابل یا مودم یا استفاده از فرستنده گیرنده های مادون قرمز ایجاد گردد .ارتباط سریال با استفاده از

بسیار شبیه كار با فایلها میباشد . همچنین ویندوز دارای توابعی برای باز یا بسته كردن و دستكاری مشخصات  API روالهای

را به زبان پورت ترجمه نمود و آنرا به فرم CPU پورت میباشد . برای كار با پورت سریال توابعی موجود است تا بتوان اطلاعات

بیت به بیت درآورد تا برای ارسال آماده شوند همچنین در حالت دریافت اطلاعات نیز با كنار هم قرار گرفتن این بیتها یك

برای پردازش فرستاده میشود . البته این فرایند توسط لایه های مختلفی صورت میگیر د ویندوز CPU بایت ایجاد شده و به

دیگر API استفاده میكند. البته با وجود روالهای COMM.DRV برای كار با پورت سریال از یك درایور انتقال سریال بنام

نیازی به چنین ارتباطهای سطح پائینی برای برنامه نویس احساس نمیشود . به عنوان یك برنامه نویس بسته به نیاز خود

مهم و API استفاده نمائید . در این مقاله ما به ذكر برخی از روالهای ACTIVEX و یا از یكسری API میتوانید از روالهای

خواهیم پرداخت درانتها COMM بنام ٣٢ VISUAL STADIO PRO ارئه شده همراه با ACTIVEX توضیح یك

نیز به طریقه’ ارتباط با میكروكنترلر خواهیم پرداخت .

. COMM قدم اول : ایجاد ارتباط با پورت سریال توسط ٣٢

كردن آنها set گنجانده شده است كه با property یكسری COMM برای شروع به كار و دسترسی به پورت توسط ٣٢

ها میپردازیم. property میتوان پورت را آماده دسترسی نمود . در زیر به توضیح این

mscomm١.Comport=[value] كردن شماره’پورت Set - ١

١٦ باشد. اگر پورتی با شماره’مورد - مینماید. این مقدار میتواند بین ٠ SET شماره پورت مورد نظر را property این

نظر شما موجود نباشد یك خطا رخ میدهد كه میتوان از آن برای اطمینان از انجام كار سود برد.

mscomm١.setting = [string value] كردن مشخصات پورت set - ٢

امكان تعریف مشخصات پورت را میدهد .این مشخصات بایستی به صورت یك رشته تعریف شود.این رشته property این

میباشد “ boud rate , parity bit , data bit ,stop bit “ شامل تعریف

مقادیر معتبر برای این مقادیر را در جدول زیر نشان داده شده است .

Boud rate

110 –300 –600 –1200 – 2400 – 4800 – 9600( defult ) –14400- 19200 – 28800

38400 – 56000 – 57600 - 115200 - 128000 - 256000

Parity bit M ( mark) – E ( even ) – N ( none( defult ) ) – O ( odd ) - S ( space )

Data bit 4 – 5 – 6 – 7 – 8 ( defult )

Stop bit 1( defult ) 1.5 2

portopen = [value bolean] - ٣

FALS پورت مورد نظر باز شده و در اختیار ما قرار می گیرد .برای قطع ارتباط این خاصیت را TRUE كردن آن به set با

نشود ( موجود نبودن پورت ) با باز كردن پورت یك خطا رخ میدهد set درست comport میكنیم . اگر شماره ’ پورت در

كه میتوان با چك كردن آن درستی عمل را تست نمود.

‘ Open the serial port

MSComm1.CommPort = 2

MSComm1.Settings = “9600,N,8,1”

MSComm1.PortOpen = True

قدم دوم : سازماندهی و تنظیمات مورد نیاز .

تنظیم بافرهای ورودی وخروجی : وقتی كه شما یك پورت را باز میكنید دو بافر ورودی و خروجی ایجاد میشود این

وجود دارد . property بافرها نگهدارنده ’ اطلاعات ورودی وخروجی میباشند .برای سازماندهی این بافرها تعدادی

برای تعیین مقدار حافظه ’بافر برای ورودی و خروجی میباشد . افزایش مقدار Inbuffersize و Outbuffersize

این حافظه ها باعث احتمال كاهش حافظه برای برنامه میشود البته با وجود كامپیوترهای امروزی نیازی به نگرانی نیست

استفاده نمایید . hand shaiking میشود مگر اینكه از over flow .كاهش این مقدار نیز باعث بروز

-----------------------------------------------------------------------------------------

Rthershold , Sthershold

oncomm كردن و برگرداندن حداقل تعداد كاراكترهای قابل قبول در بافر خروجی قبل از رویداد set ’ وظیفه Sthershold

در oncomm را دارد مثلا ٠ كردن آن باعث غیر فعال شدن رویداد commevsend به مقدار commevnt و تغییر مقدار

برابر این مورد میشود و ١ كردن آن باعث رویدادن آن در زمان خالی شدن بافر میشود .برای توضیحات بیشتر به توضیحات

مراجعه نمائید . oncomm رویداد

و oncomm كردن و برگرداندن تعداد كاراكترهای موجود در بافر ورودی قبل از ایجادرویداد set ’ وظیفه Rthershold

را دارد . commevrecive به مقدار commevnt تغییر مقدار

-----------------------------------------------------------------------------------------

Inputlen

میباشد. قرار دادن ٠ در آن باعث خواندن تمام محتویات بافر input كننده و برگرداننده طول رشته’ خوانده شده توسط Set

گیرنده میشود.

Eofenable

یك رویداد eof میباشد و با ١ كردن آن با رسیدن به (^Z - str$(٢٦)) end of file نشانگررسیدن به یك رشته

رخ خواهد داد. oncomm

اداره كردن بافرهای ورودی و خروجی

میتوانید بر property همانطور كه گفته شد بافرهای ورودی و خروجی هنگام ایجاد یك پورت ایجاد میشود. شما با یكسری

دریافت كنید. text با binary رفتار این بافرها كنترل داشته باشید. شما میتوانید اطلاعات را به صورت

Input

این خاصیت برای ذخیره كردن و بازیابی اطلاعات درون بافر ورودی بكار میرود. مثلا اگر میخواهید اطلاعات رسیده را در یك

text١.text = mscomm١.input : نشان دهید text box

معین كنید . inputlen نكته : ابتدا بایستی طول رشته’ مورد نظر را با

Inputmode

دریافت كنید این كار را با استفاده از text با binary برای تعین فرمت ورودی بكار میرود شما میتوانید اطلاعات را به صورت

انجام پذیر است . در این صورت comminputmodebinary یا comminputmodetext به نامهای vb ثابتهای

و یا باینری در یك آرایه’ باینری ذخیره میشود . text اطلاعات به صورت

Inbuffercount

بیانگر تعداد بایتهای رسیده می باشد همچنین با صفر كردن آن بافر ورودی پاك میشود

بافر فرستنده ----------------------------

Output

را ارسال text با binary شما میتوانید input از این خاصیت برای ارسال اطلاعات یا دستورات استفاده نمود .مانند خاصیت

انجام دهید . text با binary كنید این كار را میتوانید با استفاده از تعریف مقادیر به صورت

مثال:

MSComm1.Output = "ATDT 111-111111" Send an AT command

MsComm1.Output = "This is a text string" Send a text string

MSComm1.Output = Out Send Byte array data

به بخش ارتباط با مودم مراجعه كنید . AT نكته : برای آشنائی با دستورات

Outbuffercount

شما همچنین میتوانید به تعداد كاراكترهای ارسالی از طریق این خاصیت پی ببرید .

-----------------------------------------------------------------------------------------

Hand Shaiking دستدهی

یك بخش مهم در سازماندهی بافرهای ورودی وخروجی اطمینان از صحت اطلاعات رسیده و اطلاعات ارسالی است و اطمینان

با استفاده ار بروتكل ارتباطی Hand Shaiking . نشده است (over flow) از اینكه سرعت در اطلاعات رسیده باعث سرریز

خود اطلاعات رسیده را بررسی میكنند تا در اثر سرریز از بین نرفته باشند .

(comnone) شما بایستی كه پروتكل مورد نیاز را تعیین كنید. این پروتكل در حالت عادی غیر فعال است

Setting Value Description

ComNone 0 No handshaking (Default).

ComXOnXOff 1 XOn/XOff handshaking.

ComRTS 2 RTS/CTS (Request To Send/Clear To Send)

handshaking.

ComRTSXOnXOff 3 Both Request To Send and XOn/XOff handshaking.

هردو comRTSXOnXOff انتخاب پروتكلها بستگی زیادی به دستگاهی كه میخواهید ب ه آن متصل شوید دارد با انتخاب

پروتكل حمایت میشوند

كنید وكر نه شما true را rtsenable كنید باید كه خاصیت set نكته : اگر شما این خاصیت را به هر كدام از مقادیر ١ و ٢

قادر به دریافت اطلاعات نخواهید بود .

Rtsenable = [bolean]

استفاده شده و وجود این خاصیت به شما rtc/cts در دستدهی rts’ میگردد پایه rts’ شدن پایه high این خاصیت باعث

اجازه میدهد كه به صورت دستی این كار را انجام دهید

Dsrholding .

است این سیگنال از طرف فرستنده برای اعلام آمادگی خود فرستاده میشود . dsr ’ تشخیص دهنده’ وضعیت پایه

Dtrenable

میشود low و با بسته شدن آن high با باز شدن پورت Dtr خط true كردن آن به set با

Setting Description

True Enable the Data Terminal Ready line.

False (Default) Disable the Data Terminal Ready line.

مودم میشویم . hangup نكته: در اكثر مواقع با ٠ كردن این خاصیت باعث

Ctsholding

این كار را انجام میدهد. این cts ’ این خاصیت تشخبص دهنده’ آمادگی برای ارسال اطلاعات میباشد كه با چك كردن پایه

پایه ورودی است و ار طرف فرستنده ارسال میشود

Setting Description

True Clear To Send line high.

False Clear To Send line low.

Parityreplace ----------------------------------------------------

است. این كاراكتر در حالت معمول parity كننده و برگرداننده’كاراكتر جایگزین در هنگام رخداد خطای set این خلصیت

كنید ویا با مقدار دهی "" آنرا غیر فعال كنید . set برابر ؟ است ولی شما میتوانید به هر كاراكتر دیگر آنرا

Commevent و خاصیت Oncomm رخداد

و خاصیت Oncomm در هنگام اجرای برنامه شما بایستی به رویدادهای مختلف یا خطاهای ایجاد شده ت وجه نمایید رخداد

به شما اجازه ’ بدام انداختن و چك كردن رخدادها و خطاهای گوناگون را میدهد . در هنگام رخ دادن خطا Commevent

تغییر میكند. بنابراین شما میتوانید با تست این خاصیت commevent اجرا شده و مقدار خاصیت oncomm یك رویداد

متوجه عملكرد برنامه شوید

نشان میدهد . commevent . جدول زیر مقادیر خطاها در

Constant Value Description

ComEventBreak 1001 A Break signal was received.

ComEventFrame 1004 Framing Error. The hardware detected a framing error.

ComEventOverrun 1006 Port Overrun. A character was not read from the hardware

before the next character arrived and was lost.

ComEventRxOver 1008 Receive Buffer Overflow. There is no room in the receive

buffer.

ComEventRxParity 1009 Parity Error. The hardware detected a parity error.

ComEventTxFull 1010 Transmit Buffer Full. The transmit buffer was full while

trying to queue a character.

ComEventDCB 1011 Unexpected error retrieving Device Control Block (DCB)

for the port.

نشان میدهد . commevent جدول زیر مقادیر رویدادها را در

Constant Value Description

ComEvSend 1 There are fewer than Sthreshold number of characters in the

transmit buffer.

ComEvReceive 2 Received Rthreshold number of characters. This event is

generated continuously until you use the Input property to

remove the data from the receive buffer.

ComEvCTS 3 Change in Clear To Send line.

ComEvDSR 4 Change in Data Set Ready line. This event is only fired

when DSR changes from 1 to 0.

ComEvCD 5 Change in Carrier Detect line.

ComEvRing 6 Ring detected. Some UARTs (universal asynchronous

receiver-transmitters) may not support this event.

ComEvEOF 7 End Of File (ASCII character 26) character received.

میتوانید اطلاعات مفیدی در مورد اجرای برنامه كسب كنید. oncomm شما با تست این مقادیر در هنگام رویداد

ارتباط با مودم -------------------------

یكی از كاربردهای جالب پورت سریال استفاده از آن برای ارتباط با مودم میباشد مثلا میتوانید با آن شماره گیری كنید و یا

اطلاعات را از طریق خط تلفن ارسال و یا دریافت نمایید. مثلا برای شماره گیری با آن میتوانید از این دستور استفاده كرد.

MSComm1.Output = "ATDT 0571-2642332" & vbcr

شماره گیری به روش تن است . در حالت ارتبا ط با با یك T و dialing’ نشاندهنده D اغازگر ارتباط است AT در این مثال

است. ”ok“ شبكه بایستی از یك كاراكتر برگشتی نیز استفاده نمود .اگر شماره گیری درست انجام شود برگشتی تابع

به صورت زیر است . AT دیگر دستورات همراه

D ( dialing ) شماره گیری

T استفاده از سیستم تن

P استفاده از سیستم پالس

وقفه در شماره گیری ,

وقفه در شماره گیری به مقدار ٥. ثانیه !

H مودم میشود Hang up باعث

مثال : ارسال و دریافت یك فایل از طریق مودم

Dim Offset As Long : بخش فرستنده

Dim FileData As Byte

Dim FileName As String

Private Sub Form_Load()

MSComm1.Settings = "28800,N,8,1"

MSComm1.InputLen = 1

MSComm1.CommPort = 2

MSComm1.PortOpen = True

Offset = 1

Open FileName For Binary Access Read As #1

End Sub

Private Sub MSComm1_OnComm()

If MSComm1.CommEvent = 2 Then

temp = MSComm1.Input

If Offset <= FileLen(FileName) Then

Get #1, Offset, FileData

q = FileData

MSComm1.Output = Format(q, "000")

Offset = Offset + 1

End If

End If

End Sub

Private Sub Form_Unload(Cancel As Integer)

Close #1

End Sub

Dim ByteCount As Long : بخش گیرنده

Dim FileData As Byte

Private Sub Form_Load()

MSComm1.Settings = "28800,N,8,1"

MSComm1.InputLen = 3

MSComm1.CommPort = 1

MSComm1.PortOpen = True

Open "c:\sample.txt" For Binary Access Write As #1

End Sub

Private Sub MSComm1_OnComm()

If MSComm1.CommEvent = 2 And MSComm1.InBufferCount > 0 Then

FileData = CInt(MSComm1.Input)

ByteCount = ByteCount + 1

Put #1, ByteCount, FileData

MSComm1.Output = Chr$(26)

End If

End Sub

Private Sub Command1_Click()

MSComm1.Output = Chr$(26)

End Sub

Private Sub Form_Unload(Cancel As Integer)

Close #1

End Sub

توضیح پایه های پورت سریال

9-pin 25-pin توضیح پایه نام پایه

3 2 TD

Transmit data ارسال كننده’ اطلالالالاعات

2 3 RD

Receive data گیرنده’ اطلالالالاعات

7 4 RTS

Request to send آماده برای ارسال

8 5 CTS

Clear to send آماده’ دریافت اطلالالالاعات

6 6 DSR

Data set ready گیرنده متصل شده و آماده است

5 7 GND

Signal ground زمین

4 20 DTR

Data terminal ready فرستنده آماده است

ارتباط میكروكنترلر و كامپیوتر از طریق پورت سریال .

با RS بایستی از یك رابط سخت افزاری برای تطابق سطح سیگنال ٢٣٢ RS برای ار تباط با میكرو از طریق پورت سریال ٢٣٢

استفاده DS و ی ا ٢٧٥ MAX یا ٢٣٣ MAX استفاده نمود برای این كار می توان از تراشه هایی مانند ٢٣٢ TTL سطح

بكار برد . RS نمود طرح ارائه شده در زیر را میتوان برای ارتباط میكرو با ٢٣٢

نمود DS مدار ارائه شده در زیر را نیز میتوان به راحتی جایگزین تراشه’ ٢٧٥

با كامل شدن ارتباط سخت افزاری میتوان شروع به ایجاد نرم افزار لازم نمود . برای ارتباط با پورت سریال كامپیوتر نیاز به

و دیگر تنظیمات لازم داریم كه توسط میكرو و كامپیوتر حمایت شده باشد BOUD RATE تنظیم

.برای تنظیم این مقدار در كامپیوتر با توجه به توضیحات قبلی بایستی :

MSComm1.Settings = "9600,N,8,1"

نمود.. set را به مقدار دلخواه در میكرو و كامپیوتر Parity bit - Data bit - Stop bit البته میتوان مقادیر

برای تنظیمات لازم در میكرو كنترلر به مثال زیر توجه نمائید .

ORG 00

DB 1, 2 , 3, 4, 5, 0

ORG 100

MOV TMOD,#20H timer1 , mode 2 ( auto reload )

MOV TH1,#0FAH 4800 baud rate ( with xtall = 11.0592 mhz )

MOV SCON,#50H 8 bit , 1 stop , ren enable

SETB TR1 run timer 1

MOV DPTR,#00H load data pointer to transfer data

LL1:

CLR A

MOVC A,@A+DPTR load ACC with data

JZ LL2 test for 0 data ( end data )

CALL SEND call sender data function

INC DPTR inc data poniter

JMP LL1

SEND:

MOV SBUF,A load SBUF with data and send it

LL3:

JNB T1,LL3 wait for end send

RET

LL2:

END

--------------------------------------------------

مثال ارائه شده در بالا طرح ساده ای از ارسال چند عدد به كامپیوتر می باشد . همچنین شما میتوانید اطلاعات را به همین

صورت به میكرو منتقل نما ئید .

 

 

سید میلاد رسولی

miladhappy0098@yahoo.com

miladhappy97@yahoo.com

www.miladhappy0098.blogfa.com

mob:091188174**

093818764**

093827037**

 





صفحات جانبی
آمار وبلاگ
  • کل بازدید :
  • بازدید امروز :
  • بازدید دیروز :
  • بازدید این ماه :
  • بازدید ماه قبل :
  • تعداد نویسندگان :
  • تعداد کل پست ها :
  • آخرین بازدید :
  • آخرین بروز رسانی :
امکانات جانبی
به سایت ما خوش آمدید