TRUYỀN THƠNG NỐI TIẾP DÙNG VISUAL BASIC

Một phần của tài liệu Luận văn: Thiết kế hệ thống bãi giữ xe ôtô tự động pot (Trang 54 - 59)

IX. MỘT VÀI LĨNH VỰC TIÊU BIỂU ỨNG DỤNG PLC

TRUYỀN THƠNG NỐI TIẾP DÙNG VISUAL BASIC

I. TRUYỀN THƠNG NỐI TIẾP DÙNG VISUAL BASIC

Bình thường, khi chạy phần mềm Visual Basic ta chỉ thấy một số thành phần

quen thuộc trên hộp cơng cụ. Nhưng VB cho phép nhiều thành phần cĩ thể bổ sung

thêm vào. Điều khiển truyền thơng Mscomm của Visual Basic là một trong số các

đối tượng được bổ sung để tham gia vào một số việc truyền nhận dữ liệu thơng qua cổng nối tiếp.

Trong Visual Basic 6.0 ta cĩ thể bổ sung thành phần Mscomm như sau : Chọn Project( Component(ctrl-t) sẽ xuất hiện cửa sổ. Sau đĩ chọn Microsoft Comm

Control 6.0, Mscomm sẽ xuất hiện trên thanh cơng cụ.

Điều khiển truyền thơng cung cấp hai khả năng để trao đổi thơng tin :

Điều khiển sự kiện

Truyền thơng điều khiển sự kiện là phương pháp tốt nhấtđược sử dụng trong

quá trình trao đổi thơng tin nối tiếp khi nĩ giải phĩng máy tính để làm các cơng việc

khác. Trong nhiều tình huống, ta cần được thơng báo về sự thay đổi. Thí dụ như ta

cần biết khi cĩ ký tự gửi đến hoặc sựthay đổi xảy ra trên đường DCD (Data Carier Detect) hoặc đường RTS(Request to send). Để làm điều đĩ, ta sẽ phải dùng sự kiện

truyền thơng OnComm để bẫy và điều khiển các sự kiện. Điều khiển truyền thơng

cịn phát hiệnvà điều khiển các lỗi truyền thơng.

Hỏi vịng ( Polling )

Ta cũng cĩ thể hỏi vịng các sự kiện và lỗi bằng cách kiểm tra giá trị của đặc

tính ComEvent sau mỗi chu kỳ của chương trình để xác định xem liệu một sự kiện

hoặc một lỗi đã xuất hiện. Chẳng hạn ,chương trình cĩ thể tạo vịng lặp để chờ một

ký tự cần được nhận. Cứ mỗi lần như vậy, ký tự được đọc từ bộ đệm nhận. Thơng thường, phương pháp này được sử dụng khi chương trình cĩ thời gian để tiến hành hỏi vịng bộ nhận thơng tin, hay nĩi cách khác là trong những ứng dụng khơng lớn.

Đặc tính

Theo mặc định, cổng thứ nhất tạo ra đối tượng cĩ tên là MSComm1, đối tượng thứ hai là MSComm2,…

Thí dụ chỉ ra cách truyền thơng qua cổng nối tiếp cĩ thể được tiến hành như

thế nào bằng cách sử dụng một MODEM.

Private sub Form_load() Dim Instring as String Mscomm1.ComPort=1

‘sử dụng COM1

Mscomm1.Setting=”9600,N,8,1” ‘9600baud,no parity,8bit data,1bit stop Mscomm1.InputLen=0

‘Mscomm đọc heat bộ đệm nhận khi dùng lệnh Input

Mscomm1.PortOpen=True ‘mở cổng

Mscomm1.Output=”ATVQ0”&Chr$(13) ‘gửi lệnh attention tới MODEM

‘đợi dữ liệu trở lại cổng nối tiếp (adsbygoogle = window.adsbygoogle || []).push({});

Do DoEvents

Buffer$=Buffer$&Mscomm1.Input

Loop Until InStr(Buffer$,”OK”&vbCRLF)

‘đọc dữ liệu trả lời “OK”

Mscomm1.PortOpen=False

‘đĩng cổng nối tiếp

End Sub

 Settings:

Các đặc tính settings đặt và trả lại các thơng số truyền thơng cho cổng RS-

232, như tốc độ baud, chẳn lẻ, số bit dữ liệu và số các bit dừng.

Cú pháp của câu lệnh là:

Nếu paramString khơng cĩ khi mở cổng thì điều khiển truyền thơng phát sinh ra lỗi 380.

Paramstring là một xâu chứa bốn thơng số thiết lập cho cổng RS-232 và cĩ dạngnhư sau:

“BBBB, P, D, S”

Ở đây, BBBB xác định tốc độ baud, P là bit chỉ tính chẳn lẻ, D là số bit dữ

liệu, và S là số các bit dừng (bit stop). Giá trị mace định của Paramstring là: “9600, N, 8, 1”

 Comport :

Đặc tính này đặt và trả lại số cổng truyền thơng. Cú pháp của câu lệnh là: [form]MSComm.CommPort[=port number%]

Trong khi thiết kế ta cĩ thể đặt portnumber bằng một giá trị name trong

khoảng từ 1 đến 99(giá trị mace định là 1). Trước khi dùng lệnh này, phải thiết lập

cổng bằng CommPort. Nếu ta dùng đặc tính PortOpen trước khi thiết lập cổng bằng

CommPort thì điều khiển truyền thơng sinh ra lỗi 68 (lỗi chu6a cĩ thiết bị hoặc

cổng khơng tồn tại).

Đặc tính PortoPen

Đặc tính PortOpen đặt và trả lại trạng thái của cổng truyền thơng(đĩng hoặc

mở). Đặc tính này khơng cĩ trong thời gian thiết kế chương trình. Cú pháp câu lệnh

là:

[form]MSComm.PortOpen[=True/False]

Thơng số thiết lập là True để mở cổng, cịn False để đĩng (giải phĩng) cổng và xố nội dung các bộ đệm nhận và truyền (tác động này tự động xảy ra khi một ứng

dụng được đĩng). (adsbygoogle = window.adsbygoogle || []).push({});

Trước khi dùng đặc tính này, phải đặt số cổng bằng đặc tính CommPort, nếu ta quên đi đặc điểm này thì lỗi 68 phát sinh.

Thí dụ về mở cổng truyền thơng số 1(COM1) với tốc độ Baud là 4800 Baud, khơng kiểm tra tính chẳn lẻ, 8 bit dữ liệu, 1 bit stop.

MSComm1.Setting=”4800, N, 8, 1” Kiểu dữ liệu MSComm1. Setting là String.

Đặc tính Input

Input trả lại và xố bỏ một chuỗi ký tự từ bộ đệm nhận.Đặc tính này khơng cĩ sẵn trong khi thiết kế và là chỉ đọc (Read_only) khi chạy chương trình. Cú pháp của

câu lệnh là:

[form]MSComm.Input

Đặc tính InputLen qui định số ký tự được đọc bởi câu lệnh Input.Để xác định

số các ký tự trong bộ đệm, đặc tính InBufferCount được kiểm tra. Đặt InputLen

bằng 0 để đọc heat bộ đệm nhận.

Đặc tính InputMode quyết định kiểu dữ liệu thu về qua đặc tính Input. Nếu đặc tính này được đặt là CommInputModeText thì đặc tính Input sẽ trả về dữ liệu

kiểu Text. Nếu đặc tính này được đặt là CommInputModeBinary thì Input sẽ trả về

dữ liệu nhị phân.

Thí dụ chỉ cách đọc dữ liệu từ bộ đệm nhận : Mscomm1.InputLen=0

‘đọc toàn bộ nội dung của bộ đệm nhận

If Mscomm1.InBufferCount then ‘kiểm tra cĩ dữ liệu hay khơng

InString$=Mscomm1.Input End if

Kiểu dữ liệu của đặc tính này là Variant

Đặc tính InBufferSize

Đặt và trả lại kích thước bộ đệm nhận, tính theo số byte.Cú pháp của câu lệnh

là :

[form]Mscomm.InBufferSize[=numbyte%]

Đặc tính này cĩ liên quan đến kích thước bộ đệm nhận. Giá trị mặc định là 1024 bytes. Kích thước của bộ đệm phải được đặt sao cho nĩ cĩ thể cất giữ được số

lớn nhất của các ký tự sẽ được nhận trước khi chương trình ứng dụng cĩ thể đọc

chúng từ bộ đệm, trừ khi ta làm việc ở chế độ bắt tay (handshaking). Kiểu dữ liệu của đặc tính này là Integer

Đặc tính InBufferCount

Trả lại số ký tự trong bộ đệm nhận. Nĩ cũng cĩ thể được dùng để xố bộ đệm

bằng cách đặt số của các ký tự bằng 0. Đặc tính này khơng cĩ trong thời gian thiết

kế chương trình. Cú pháp của câu lệnh này là: [form]Mscomm.InBufferCount[=Count%]

Ta cĩ thể xố bộ đệm nhận bằng cách đặt đặc tính InBufferCount=0 (adsbygoogle = window.adsbygoogle || []).push({});

Kiểu dữ liệu của đặc tính này là Integer.

Đặc tính Output

Đặc tính Output sẽ viết một chuỗi ký tự vào bộ đệm truyền, đặc tính này khơng cĩ trong thời gian thiết kế chương trình. Cú pháp của câu lệnh này là :

Mscomm1.Output[=OutString$]

Thí dụ sau cho biết cách gửi ký tự mà người gõ từ bàn phím: Private Sub Form_load(key Ascii as Integer)

Mscomm1.Outport=Chr$(Key Ascii) End sub

Đặc tính Output cĩ thể xuất dữ liệu dạng Text hay Binary. Để gửi dữ liệu

Text, ta phải khai báo một biến Variant và cho nĩ chứa chuỗi muốn gửi sau đĩ gán

biến này cho một đặc tính Output. Để gửi dữ liệu Binary, ta phải truyền một biến Variant chứa một mảng các byte cho đặc tính Output.

Kiểu dữ liệu của dạng này là Variant.

Đặc tính OutputBufferSize

Đặc tính này đặt và trả lại kích thước của các ký tự trong bộ đệm truyền. Cú pháp của câu lệnh này là :

[form]Mscomm.OutputBufferSize[=numbyte%] Giá trị mặc định của đặc tính này là 512 bytes

Chú ý:

Khơng được nhầm lẫn giữa hai đặc tính OutBufferCount và OutBufferSize với

nhau. Đặc tính OutBufferCount nĩi lên số byte hiện đang cĩ trong bộ đệm truyền,

cịn OutBufferSize qui định tổng kíchthước của bộ đệm truyền.

thường nên bắt đầu kích thước bộ đệm truyền 512 bytes. Nếu lỗi tràn xảy ra phải tăngkích thước bộ đệm thích hợp.

Đặc tính OutBufferCount:

Đặc tính này trả lại số ký tự trong bộ đệm truyền. Nhờ đặc tính này, ta cĩ thể

xố nội dung bộ đệm truyền bằng cách đặt giá trị của OutBufferCount=0.Cú pháp

của câu lệnh này là:

[form]Mscomm.OutBufferCount[=value%] Kiểu dữ liệu của đặc tính này là Integer.

Đặc tính SThreshold

Đặt và trả lại số ký tự tối thiểu của các ký tự cĩ thể cho phép trong bộ đệm

truyền trước khi điều khiển truyền thơng xác lập đặc tính CommEvent và phát sinh sự kiện OnComm. Xác lập đặc tính SThreshold bằng 0 để vơ hiệu hố sự phát sinh sự kiện OnComm. Ngược lại, nếu đặt SThreshold bằng 1 thì điều khiển truyền

thơng phát sinh sự kiện OnComm (sự kiện OnComm được gọi) khi bộ đệm truyền

khơng cĩ dữ liệu (hay bộ đệm truyền rỗng). Cú pháp của câu lệnh này là : [form}MScomm.SThreshold[=numChars%]

II.CƠ SỞ DỮ LIỆU

(adsbygoogle = window.adsbygoogle || []).push({});

Một phần của tài liệu Luận văn: Thiết kế hệ thống bãi giữ xe ôtô tự động pot (Trang 54 - 59)