1. Trang chủ
  2. » Công Nghệ Thông Tin

Thí nghiệm TTDL & Mạng máy tính - Phần D: Lập trình cổng nối tiếp

14 428 1
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Lập trình cổng nối tiếp
Chuyên ngành Công nghệ thông tin
Thể loại Thí nghiệm
Định dạng
Số trang 14
Dung lượng 341,08 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

- Cửa sổ chương trình Visual Basic - Vùng thiết kế: Thiết kế giao diện của chương trình - Project Explorer: Hiển thị tất cả các Form và Module có trong chương trình - Properties Window:

Trang 1

PHẦN D : LẬP TRÌNH CỔNG NỐI TIẾP

™ MỤC ĐÍCH THÍ NGHIỆM

Giúp sinh viên bằng thực nghiệm khảo sát các vấn đề chính sau đây :

- Lập trình trao đổi thơng tin qua cổng nối tiếp

- Lập trình điều khiển Modem

™ THIẾT BỊ SỬ DỤNG

1 Máy vi tính

2 Null Modem

3 Modem

4 Tổng đài

I Cơ bản về Visual Basic 6

- Khởi động Visual Basic: Start > All Programs > Microsoft Visual Studio 6.0 > Visual Basic 6.0

- Mở một Project mới: File > New Project

Trang 2

Chọn Project là Standard EXE

- Cửa sổ chương trình Visual Basic

- Vùng thiết kế:

Thiết kế giao diện của chương trình

- Project Explorer:

Hiển thị tất cả các Form và Module có trong chương trình

- Properties Window:

Hiển thị và cho phép sửa đổi thuộc tính của các đối tượng

- Thanh công cụ:

Tạo các đối tượng cho Project:

Vùng thiết kế

Properties Window

Trang 3

- Các thuộc tính cơ bản của các đối tượng trong VB6:

Name: tên của đối tượng, mỗi đối tượng phải có tên khác nhau

Caption: hiển thị nội dung trên cửa sổ thiết kế

TabIndex: thứ tự chuyển đến khi nhấn phím Tab

Font: chọn font hiển thị trên đối tượng

BackColor, ForeColor: chọn màu hiển thị

Value: giá trị của đối tượng (dùng cho Check box và Option để xác định trạng thái được chọn hay không chọn)

Text: nội dung chứa trong một Textbox

MultiLine: cho phép hiện nhiều dòng trên Textbox hay không

Enable: cho phép đối tượng hoạt động hay không

Duration: xác định thời gian Timer tràn (đơn vị là ms)

- Các sự kiện cơ bản của các đối tượng trên VB6:

Form_Load: xảy ra mỗi khi mở một form

Click: xảy ra khi thực hiện nhấn chuột trái trên đối tượng

Timer: xảy ra mỗi khi Timer tràn

Command Button

Option Check box

Frame

Timer

Trang 4

II Các lệnh cơ bản trong Visual Basic 6

- Lệnh IF – THEN – ELSE:

Cấu trúc lệnh:

IF Điều_kiện_1 THEN

Công_việc_1

ELSEIF Điều_kiện_2 THEN

Công_việc_2

ELSEIF Điều_kiện_3 THEN

Công_việc_3

ELSE

Công_việc

Câu lệnh IF – THEN có thể bao gồm nhiều phát biểu ELSEIF hoặc không

có phát biểu nào

Ví dụ:

IF a > 10 THEN MsgBox “Lon hon 10”

ELSEIF a > 0 THEN MsgBox “Lon hon 0 va nho hon 10”

ELSE

MsgBox “Nho hon 0”

- Lệnh SELECT CASE:

Trong trường hợp có nhiều lựa chọn cho một biểu thức điều kiện, ta có thể thay bằng lệnh Select Case

Trang 5

Cấu trúc:

SELECT CASE Biểu_thức_điều _kiện CASE Điều_kiện_1

Lệnh CASE Điều_kiện_2

Lệnh CASE Điều_kiện_3

Lệnh …

ELSE Điều_kiện

Lệnh

- Lệnh FOR:

FOR dùng để tạo vòng lặp xác định trước số lần lặp

Cấu trúc:

FOR Biến_đếm = Giá_trị_đầu TO Giá_trị_cuối STEP Bước_nhảy

Lệnh NEXT Biến_đếm

Ví dụ:

FOR i = 1 TO 100 STEP 2 Result = Result + 1

Nếu bỏ qua phát biểu STEP thì xem như bước nhảy là 1 và có thể yêu cầu kết thúc vòng lặp FOR bằng lệnh EXIT FOR

Trang 6

- Lệnh DO:

Lệnh DO dùng để tạo vòng lặp vô tận và chỉ kết thúc khi điều kiện kiểm tra thoả mãn Lệnh DO có 2 dạng: kiểm tra điều kiện trước khi thực hiện vòng lăp và sau khi thực hiện vòng lặp

Cấu trúc:

DO

Lệnh LOOP WHILE Điều_kiện

Hay:

DO WHILE Điều_kiện

Lệnh LOOP

III Giao tiếp cổng nối tiếp dùng đối tượng MSComm

1 Mô tả

Việc truyền thông nối tiếp trên Windows được thực hiện thông qua một ActiveX có sẵn là Microsoft Comm Control ActiveX này dược lưu trữ trong file MSCOMM32.OCX Quá trình này có hai khả năng thực hiện điều khiển 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 trong quá trình điều khiển việc trao đổi thông tin Quá trình điều khiển thực hiện thông qua sự kiện OnComm

- Hỏi vòng:

Quá trinh điều khiển bằng phương pháp hỏi vòng thực hiện thông qua kiểm tra các giá trị của thuộc tính CommEvent sau một chu kỳ nào đó để xác định xem có sự kiện nào xảy ra hay không Thông thường phương pháp này sử dụng cho các chương trình nhỏ

ActiveX MsComm được bổ sung vào một Visual Basic Project thông qua

menu Project > Components:

Trang 7

Biểu tượng của MsComm và các thuộc tính cơ bản mô tả như sau:

CommPort Số thứ tự cổng truyền thông Input Nhận ký tự từ bộ đệm Output Xuất ký tự ra cổng nối tiếp PortOpen Mở / đóng cổng

Settings Xác định các tham số truyền

Biểu tượng của MSComm

Trang 8

2 Các thuộc tính

™ Settings:

Xác định các tham số cho cổng nối tiếp Cú pháp:

MSComm1.Settings = ParamString

MSComm1: tên đối tượng

ParamString: là một chuỗi có dạng như sau: "BBBB,P,D,S"

BBBB: tốc độ truyền dữ liệu (bps) trong đó các giá trị hợp lệ là:

300 9600 (măc định) 56000

600 14400 188000

1200 19200 256000 P: kiểm tra chẵn lẻ, với các giá trị:

Giá trị Mô tả

O Odd (kiểm tra lẻ)

E Even (kiểm tra chẵn)

M Mark (luôn bằng 1)

S Space (luôn bằng 0)

N Không kiểm tra D: số bit dữ liệu (4, 5, 6, 7 hay 8), mặc định là 8 bit

S: số bit stop (1, 1.5, 2)

VD:

MSComm1.Settings = "9600,O,8,1" sẽ xác định tốc độ truyền

9600bps, kiểm tra parity chẵn với 1 bit stop và 8 bit dữ liệu

™ CommPort:

Xác định số thứ tự của cổng truyền thông, cú pháp:

MSComm1.CommPort = PortNumber

PortNumber là giá trị nằm trong khoảng từ 1 Æ 99, mặc định là 1

VD:

MSComm1.CommPort = 1 xác định sử dụng COM1

Trang 9

™ PortOpen:

Đặt trạng thái hay kiểm tra trạng thái đóng / mở của cổng nối tiếp Nếu dùng thuộc tính này để mở cổng nối tiếp thì phải sử dụng trước 2 thuộc tính Settings và CommPort Cú pháp:

MSComm1.PortOpen = True | False

Giá trị xác định là True sẽ thực hiện mở cổng và False để đóng cổng đồng thời xoá nội dung của các bộ đệm truyền, nhận

VD: Mở cổng COM1 với tốc độ truyền 9600 bps

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

MSComm1.CommPort = 1

MSComm1.PortOpen = True

™ Các thuộc tính nhận dữ liệu:

Input: nhận một chuỗi ký tự và xoá khỏi bộ đệm Cú pháp:

InputString = MSComm1.Input

Thuộc tính này kết hợp với InputLen để xác định số ký tự đọc vào Nếu InputLen = 0 thì sẽ đọc toàn bộ dữ liệu có trong bộ đệm

InBufferCount: số ký tự có trong bộ đệm nhận Cú pháp:

Count = MSComm1.InBufferCount

Thuộc tính này cùng dược dùng để xoá bộ đệm nhận bắng cách gán giá trị

0

MSComm1.InBufferCount = 0

InBufferSize: đặt và xác định kích thước bộ đệm nhận (tính bằng byte)

Cú pháp:

MSComm1.InBufferCount = NumByte

Giá trị măc định là 1024 byte Kích thước bộ đệm này phải đủ lớn để tránh tình trạng mất dữ liệu

VD: Đọc toàn bộ nội dung trong bộ đệm nhận nếu có dữ liệu

MSComm1.InputLen = 0

If MSComm1.InBufferCount <> 0 Then

Trang 10

InputString = MSComm1.Input

End If

™ Các thuộc tính xuất dữ liệu:

Bao gồm các thuộc tính Output, OutBufferCount và OutBufferSize,

chức năng của các thuộc tính này giống như các thuộc tính nhập

™ SThreshold:

Số byte trong bộ đệm truyền làm phát sinh sự kiện OnComm Nếu giá trị này bằng 0 thì sẽ không tạo sự kiện OnComm Cú pháp:

MSComm1.SThreshold = NumChar

™ HandShaking:

Chọn giao thức bắt tay khi thực hiện truyền dữ liệu Cú pháp:

MSComm1.HandShaking = Protocol

Các giao thức truyền bao gồm:

ComNone

ComXon/Xoff

ComRTS

ComRTSXon/Xoff

0

1

2 3

Không băt tay (mặc định) Bắt tay phần mềm (Xon/Xoff) Bắt tay phần cứng (RTS/CTS) Bắt tay phần cứng và phàn mềm

™ CommEvent:

Trả lại các lỗi truyền thông hay sự kiện xảy ra tại cổng nối tiếp

Các sự kiện:

ComEvSend

ComEvReceive

ComEvCTS

ComEvDSR

ComEvCD

ComEvRing

ComEvEOF

1

2

3

4

5

6

7

Đã truyền ký tự Khi có ký tự trong bộ đệm nhận

Có thay đổi trên CTS (Clear To Send)

Có thay đổi trên DSR (Data Set Ready)

Có thay đổi trên CD (Carrier Detect) Phát hiện chuông

Nhận ký tự kết thúc file

Trang 11

3 Sự kiện OnComm

Sự kiện OnComm xảy ra bất cứ khi nào giá trị của thuộc tính CommEvent

thay đổi Các thuộc tính RThreshold và SThreshold = 0 sẽ cấm sự kiện OnComm

khi thực hiện nhận hay gởi dữ liệu Thông thường, SThreshold = 0 và

RThreshold = 1

Một chương trình truyền nhận đơn giản thực hiện bằng cách nối chân TxD

với RxD của cổng COM1 (loopback) Phương pháp này dùng để kiểm tra cổng

nối tiếp

I KẾT NỐI TRỰC TIẾP

- Dùng Null Modem kết nối qua cổng COM của máy tính

- Dùng VB6 tạo giao diện sau:

Thêm đối tượng MSComm vào form với các thuộc tính:

Name = MSComm1

RTheshold = 1

CommPort = 1 (hay 2 tuỳ theo máy tính)

Chương trình cho Form1:

Private Sub cmdClear_Click()

txtReceive.Text = ""

End Sub

Textbox

Name = txtSend

MultiLine = True

Command Button Name = cmdExit Caption = Exit

Textbox

Name = txtReceive

MultiLine = True

Locked = True

Command Button

Name = cmdOpen

Caption = Open Port

Command Button Name = cmdClear Caption = Clear

Command Button Name = cmdSend Caption = Send

Trang 12

Private Sub cmdExit_Click()

Unload Me

End Sub

Private Sub cmdOpen_Click()

MSComm1.PortOpen = Not MSComm1.PortOpen

If MSComm1.PortOpen Then

cmdOpen.Caption = "Close Port"

Else

cmdOpen.Caption = "Open Port"

End If

End Sub

Private Sub cmdSend_Click()

MSComm1.Output = txtSend.Text

End Sub

Private Sub Form_Unload(Cancel As Integer)

If MSComm1.PortOpen Then MSComm1.PortOpen = False End Sub

Private Sub MSComm1_OnComm()

Dim t As String

Select Case MSComm1.CommEvent

Case comEvReceive

t = MSComm1.Input

txtReceive.Text = txtReceive.Text + t

End Select

End Sub

- Nhập một chuỗi vào Textbox Send và nhấn nút Send Quan sát dữ liệu nhần được ở máy thu

- Sửa đổi chương trình để thực hiện giao tiếp bằng cách bắt tay:

+ Máy tính truyền sẽ truyền chuỗi “START” để yêu cầu quá trình truyền

+ Máy tính nhận sau khi nhận được chuỗi “START’ sẽ gởi lại chuỗi

“OK” để bắt đầu quá trình

+ Máy tính truyền sau khi nhận chuỗi “OK” sẽ bắt đầu quá trình truyền

và kết thúc bằng chuỗi “STOP”

+ Máy tính nhận sau khi nhận được chuỗi “STOP” sẽ kết thúc quá trình

Trang 13

II KẾT NỐI THÔNG QUA MODEM

- Kết nối Modem vào cổng COM

- Cắm dây điện thoại vào ngõ Line của Modem

- Dùng VB6 tạo giao diện sau:

Thêm đối tượng MSComm vào form với các thuộc tính:

Name = MSComm1

RTheshold = 1

Handshaking = 2 – RTS

RTSEnable = True

CommPort = 1 (hay 2 tuỳ theo máy tính)

Chương trình cho Form1:

Private Sub cmdClear_Click()

txtReceive.Text = ""

End Sub

Private Sub cmdCommand_Click()

If MSComm1.PortOpen Then

If Trim(txtCommand.Text) <> "" Then

MSComm1.Output = Trim(txtCommand.Text) +

vbCr

Else

MsgBox "Enter command"

End If

Else

Textbox

Name = txtSend

MultiLine = True

Command Button Name = cmdExit Caption = Exit

Textbox

Name = txtReceive

MultiLine = True

Locked = True

Command Button

Name = cmdOpen

Caption = Open Port

Command Button Name = cmdClear Caption = Clear

Command Button Name = cmdSend Caption = Send

Textbox

Name = txtCommand

Command Button Name = cmdCommand Caption = Command

Label Caption = Send:

Label Caption = Receive:

Label Caption = Enter command:

Trang 14

MsgBox "Port Closed! Open Port"

End If

End Sub

Private Sub cmdExit_Click()

Unload Me

End Sub

Private Sub cmdOpen_Click()

MSComm1.PortOpen = Not MSComm1.PortOpen

If MSComm1.PortOpen Then

cmdOpen.Caption = "Close Port"

Else

cmdOpen.Caption = "Open Port"

connected = False

End If

End Sub

Private Sub cmdSend_Click()

MSComm1.Output = txtSend.Text

End Sub

Private Sub Form_Unload(Cancel As Integer)

If MSComm1.PortOpen Then MSComm1.PortOpen = False End Sub

Private Sub MSComm1_OnComm()

Select Case MSComm1.CommEvent

Case comEvReceive

txtReceive.Text = txtReceive.Text + MSComm1.Input

End Select

End Sub

- Biên dịch chương trình và kết nối đến một máy tính khác

- Quan sát và ghi nhận các thông báo do Modem gởi đến máy tính

- Gởi lệnh cho Modem để thực hiện kết nối sau 5 hồi chuông

- Viết lại chương trình để hiển thị thông báo khi đã kết nối

Ngày đăng: 23/10/2013, 02:15

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w