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

14 427 1
Thí nghiệm TTDL & Mạng máy tính - Phần D: Lập trình cổng nối tiế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

Phòng thí nghiệm Mô phỏng & Truyền số liệu Thí nghiệm TTDL & Mạng máy tính Trang 16 PHAÀN D : LAÄP TRÌNH COÅNG NOÁI TIEÁ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 PHẦN I : CƠ SỞ LÝ THUYẾT 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 Phòng thí nghiệm Mô phỏng & Truyền số liệu Thí nghiệm TTDL & Mạng máy tính Trang 17 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ế Thanh công cụ Project Explorer Properties Window Phòng thí nghiệm Mô phỏng & Truyền số liệu Thí nghiệm TTDL & Mạng máy tính Trang 18 - 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 Label Textbox Command Button Option Check box Frame Timer Phòng thí nghiệm Mô phỏng & Truyền số liệu Thí nghiệm TTDL & Mạng máy tính Trang 19 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 END IF 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” END IF - 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 Phòng thí nghiệm Mô phỏng & Truyền số liệu Thí nghiệm TTDL & Mạng máy tính Trang 20 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 END SELECT - 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 NEXT i 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. Phòng thí nghiệm Mô phỏng & Truyền số liệu Thí nghiệm TTDL & Mạng máy tính Trang 21 - 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: Phòng thí nghiệm Mô phỏng & Truyền số liệu Thí nghiệm TTDL & Mạng máy tính Trang 22 Biểu tượng của MsComm và các thuộc tính cơ bản mô tả như sau: Thuộc tính Mô tả 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 Phòng thí nghiệm Mô phỏng & Truyền số liệu Thí nghiệm TTDL & Mạng máy tính Trang 23 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à: 110 2400 38400 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 Phòng thí nghiệm Mô phỏng & Truyền số liệu Thí nghiệm TTDL & Mạng máy tính Trang 24  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 Phòng thí nghiệm Mô phỏng & Truyền số liệu Thí nghiệm TTDL & Mạng máy tính Trang 25 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: Protocol Giá trị Mô tả 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: Sự kiện Giá trị Mô tả 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 [...]... 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 27 Phòng thí nghiệm Mô phỏng & Truyền số liệu II - Thí nghiệm TTDL & Mạng máy tính 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: Label Caption = Send: Label Caption = Receive: Label Caption = Enter command: Textbox Name = txtSend... = 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 PHẦN II : I TIẾN TRÌNH THÍ NGHIỆM 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: Textbox Name = txtSend MultiLine = True Command Button Name = cmdSend Caption = Send Textbox Name = txtReceive MultiLine...Phòng thí nghiệm Mô phỏng & Truyền số liệu Thí nghiệm TTDL & Mạng máy tính 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. .. 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à... Command Button Name = cmdExit Caption = Exit 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 Trang 26 Phòng thí nghiệm Mô phỏng & Truyền số liệu Thí nghiệm TTDL & Mạng máy tính Private Sub cmdExit_Click() Unload Me End Sub Private Sub cmdOpen_Click() MSComm1.PortOpen... 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 Trang 29 + ... MSComm1.PortOpen Then If Trim(txtCommand.Text) "" Then MSComm1.Output = Trim(txtCommand.Text) + vbCr Else MsgBox "Enter command" End If Else Trang 28 Phòng thí nghiệm Mô phỏng & Truyền số liệu Thí nghiệm TTDL & Mạng máy tính 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... 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 Trang 28 Phòng thí nghiệm . quá trình. Phòng thí nghiệm Mô phỏng & Truyền số liệu Thí nghiệm TTDL & Mạng máy tính Trang 28 II. KẾT NỐI THÔNG QUA MODEM - Kết nối Modem vào cổng. thí nghiệm Mô phỏng & Truyền số liệu Thí nghiệm TTDL & Mạng máy tính Trang 23 2. Các thuộc tính  Settings: Xác định các tham số cho cổng nối tiếp.

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

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan