intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

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

Chia sẻ: Trần Bảo Quyên Quyên | Ngày: | Loại File: PDF | Số trang:14

201
lượt xem
74
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

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:

Chủ đề:
Lưu

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

  1. Phòng thí nghiệm Mô phỏng & Truyền số liệu Thí nghiệm TTDL & Mạng máy tính 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 Trang 16
  2. Phòng thí nghiệm Mô phỏng & Truyền số liệu Thí nghiệm TTDL & Mạng máy tính Chọn Project là Standard EXE. - Cửa sổ chương trình Visual Basic Thanh công cụ Vùng thiết kế Project Explorer Properties Window - 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: Trang 17
  3. Phòng thí nghiệm Mô phỏng & Truyền số liệu Thí nghiệm TTDL & Mạng máy tính Label Textbox Frame Command Button Check box Option Timer - 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 Trang 18
  4. Phòng thí nghiệm Mô phỏng & Truyền số liệu Thí nghiệm TTDL & Mạng máy tính 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 Trang 19
  5. Phòng thí nghiệm Mô phỏng & Truyền số liệu Thí nghiệm TTDL & Mạng máy tính 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. Trang 20
  6. Phòng thí nghiệm Mô phỏng & Truyền số liệu Thí nghiệm TTDL & Mạng máy tính - 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 21
  7. Phòng thí nghiệm Mô phỏng & Truyền số liệu Thí nghiệm TTDL & Mạng máy tính 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 Trang 22
  8. Phòng thí nghiệm Mô phỏng & Truyền số liệu Thí nghiệm TTDL & Mạng máy tính 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 Trang 23
  9. Phòng thí nghiệm Mô phỏng & Truyền số liệu Thí nghiệm TTDL & Mạng máy tính 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 24
  10. Phòng thí nghiệm Mô phỏng & Truyền số liệu Thí nghiệm TTDL & Mạng máy tính 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 0 Không băt tay (mặc định) ComXon/Xoff 1 Bắt tay phần mềm (Xon/Xoff) ComRTS 2 Bắt tay phần cứng (RTS/CTS) ComRTSXon/Xoff 3 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 1 Đã truyền ký tự ComEvReceive 2 Khi có ký tự trong bộ đệm nhận ComEvCTS 3 Có thay đổi trên CTS (Clear To Send) ComEvDSR 4 Có thay đổi trên DSR (Data Set Ready) ComEvCD 5 Có thay đổi trên CD (Carrier Detect) ComEvRing 6 Phát hiện chuông ComEvEOF 7 Nhận ký tự kết thúc file Trang 25
  11. 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 COM1 (loopback). Phương pháp này dùng để kiểm tra cổng nối tiếp. PHẦN II : TIẾN TRÌNH THÍ NGHIỆM 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: Textbox Command Button Name = txtSend Name = cmdSend MultiLine = True Caption = Send Textbox Name = txtReceive Command Button MultiLine = True Name = cmdClear Locked = True Caption = Clear Command Button Name = cmdOpen Caption = Open Port 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
  12. 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 = 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 27
  13. Phòng thí nghiệm Mô phỏng & Truyền số liệu Thí nghiệm TTDL & Mạng máy tính 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: Label Label Label Caption = Send: Caption = Receive: Caption = Enter command: Textbox Command Button Name = txtSend Name = cmdSend MultiLine = True Caption = Send Textbox Command Button Name = txtReceive Name = cmdClear MultiLine = True Caption = Clear Locked = True Textbox Command Button Name = txtCommand Name = cmdExit Caption = Exit Command Button Name = cmdOpen Caption = Open Port Command Button Name = cmdCommand Caption = Command 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 Trang 28
  14. 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 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.. Trang 29
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2