Phòng thí nghiệm Mơ & Truyền số liệu Thực hành Lậptrìnhhệthống BÀI 4: GIAO TIẾP CỔNG NỐI TIẾP MỤC ĐÍCH THÍ NGHIỆM Giúp sinh viên thực nghiệm khảo sát vấn đề sau : - Lậptrình trực tiếp cổng nối tiếp - Lậptrình điều khiển Modem THIẾT BỊ SỬ DỤNG Máy vi tính Modem Null modem Tổng đài điện thoại PHẦN I : CƠ SỞ LÝ THUYẾT Cổng nối tiếp sử dụng để truyền liệu hai chiều máy tính ngoại vi, có ưu điểm sau: - Khoảng cách truyền xa truyền song song - Số dây kết nối - Có thể truyền khơng dây dùng hồng ngoại - Có thể ghép nối với vi điều khiển hay PLC (Programmable Logic Device) - Cho phép nối mạng - Có thể tháo lắp thiết bị lúc máy tính làm việc - Có thể cung cấp nguồn cho mạch điện đơn giản Các thiết bị ghép nối chia thành loại: DTE (Data Terminal Equipment) DCE (Data Communication Equipment) DCE thiết bị trung gian MODEM DTE thiết bị tiếp nhận hay truyền liệu máy tính, PLC, vi điều khiển, … Việc trao đổi tín hiệu thơng thường qua chân RxD (nhận) TxD (truyền) Các tín hiệu lại có chức hỗ trợ để thiết lập điều khiển trình truyền, gọi tín hiệu bắt tay (handshake) Trang 30 Phòng thí nghiệm Mơ & Truyền số liệu Thực hành Lậptrìnhhệthống Các tốc độ truyền liệu thông dụng cổng nối tiếp là: 1200 bps, 4800 bps, 9600 bps 19200 bps Các sơ đồ kết nối dùng cổng nối tiếp: TxD TxD TxD TxD RxD RxD RxD RxD GND GND GND GND DTE1 DTE2 DTE DCE Khi thực kết nối trên, trình truyền phải bảo đảm tốc độ đầu phát thu giống Khi có liệu đến DTE, liệu đưa vào đệm tạo ngắt Ngoài ra, thực kết nối hai DTE, ta dùng sơ đồ sau: TxD RxD GND RTS CTS DSR DCD DTR TxD RxD GND RTS CTS DSR DCD DTR DTE1 DTE2 Quá trình kết nối hai máy tính thực trực tiếp thơng qua cáp chéo (Null Modem) hay kết nối thông qua đường dây điện thoại dùng Modem Kết nối trực tiếp dùng Null Modem: Common Null-Modem Connection Signal Name DB-25 Pin DB-9 Pin DB-9 Pin DB-25 Pin FG (Frame Ground) - X - FG TD (Transmit Data) - RD RD (Receive Data) - TD RTS (Request To Send) - CTS CTS (Clear To Send) - RTS SG (Signal Ground) - SG Trang 31 Phòng thí nghiệm Mơ & Truyền số liệu Thực hành Lậptrìnhhệthống DSR (Data Set Ready) 6 - 20 DTR CD (Carrier Detect) - 20 DTR DTR (Data Terminal Ready) 20 - CD DTR (Data Terminal Ready) 20 - 6 DSR Kết nối trực tiếp Modem: Lệnh DPn DTn H0 H1 Sn = V - Các lệnh sử dụng cho Modem: Mô tả Quay số điện thoại n dạng xung Quay số điện thoại n dạng tone Gác máy Nhấc máy Nạp giá trị V vào ghi Sn S0 = V: chờ V hồi chuông trước trả lời, V = – 255 (mặc định V = 0: không trả lời) S6 = V: chờ V giây trước quay số (mặc định V = 2) S7 = V: chờ V giây kể từ lúc gọi đến lúc nhận tín hiệu, khơng thơng báo lỗi Một số ghi sở dụng Modem: Thanh ghi S0: xác định số hồi chuông nhận mà sau modem trả lời cách tự động Giá trị ghi thay đổi khoảng từ 0-255 mặc định giá trị (không trả lời) Thanh ghi S3: xác định ký tự dùng để kết thúc dòng lệnh, 13 (tương ứng Enter) Thanh ghi S4: xác định ký tự xuống dòng sau ký tự kết thúc, giá trị 10 (line feed) Thanh ghi S5: xác định phím xố lui, giá trị (backspace) Thanh ghi S8: xác định thời gian tạm dừng cho dấu phẩy ',' chuỗi lệnh quay số Giá trị mặc định 2s - Các thông báo Modem Dạng ký tự OK CONNECT RING NO CARRIER ERROR NO DIAL TONE BUSY NO ANSWER Dạng số Ý nghĩa Lệnh thành cơng Kết nối 300 bps Có tín hiệu chng Khơng có sóng mang Lỗi: nhận lệnh sai, sai kiểm tra, hàng lệnh q dài Khơng có âm hiệu mời quay số Máy bận Khơng có tín hiệu trả lời Trang 32 Phòng thí nghiệm Mơ & Truyền số liệu PHẦN II : I Thực hành Lậptrìnhhệthống 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 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 = True Locked = True Command Button Name = cmdClear Caption = Clear Command Button Name = cmdOpen Caption = Open Port - Command Button Name = cmdExit Caption = Exit Thêm vào đối tượng MSComm1: Project > Components Trang 33 Phòng thí nghiệm Mơ & Truyền số liệu Thực hành Lậptrìnhhệthống Chọn đối tượng thêm vào Microsoft Comm Control 6.0: Sau xuất biểu tượng MSComm công cụ: Biểu tượng MSComm Thêm đối tượng MSComm vào form với thuộc tính: Name = MSComm1 RTheshold = CommPort = (hay tuỳ theo máy tính) Chương trình cho Form1: Trang 34 Phòng thí nghiệm Mơ & Truyền số liệu Thực hành Lậptrìnhhệthống Private Sub cmdClear_Click() txtReceive.Text = "" 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" 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 - Biên dịch thực thi - Sửa đổi chương trình để thực giao tiếp cách bắt tay: + Máy tính truyền truyền chuỗi “START” để u cầu q trình truyền + Máy tính nhận sau nhận chuỗi “START’ gởi lại chuỗi “OK” để bắt đầu q trình + Máy tính truyền sau nhận chuỗi “OK” bắt đầu trình truyền kết thúc chuỗi “STOP” + Máy tính nhận sau nhận chuỗi “STOP” kết thúc trình Trang 35 Phòng thí nghiệm Mơ & Truyền số liệu II - Thực hành Lậptrìnhhệthống 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 Modem Dùng VB6 tạo giao diện sau: Textbox Name = txtSend MultiLine = True Command Button Name = cmdSend Caption = Send Textbox Name = txtReceive MultiLine = True Locked = True Command Button Name = cmdClear Caption = Clear Textbox Name = txtNumber Command Button Name = cmdExit Caption = Exit Command Button Name = cmdOpen Caption = Open Port Command Button Name = cmdDial Caption = Dial Thêm đối tượng MSComm vào form với thuộc tính: Name = MSComm1 RTheshold = Handshaking = – RTS RTSEnable = True CommPort = (hay tuỳ theo máy tính) Chương trình cho Form1: Private Sub cmdClear_Click() txtReceive.Text = "" End Sub Private Sub cmdDial_Click() If MSComm1.PortOpen Then If Trim(txtNumber.Text) "" Then MSComm1.Output = Trim(txtNumber.Text) + vbCr Else MsgBox "Enter command" End If Else MsgBox "Port Closed! Open Port" End If End Sub Private Sub cmdExit_Click() Trang 36 Phòng thí nghiệm Mơ & Truyền số liệu Thực hành Lậptrìnhhệthống 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_Load() 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 = MSComm1.Input End Select End Sub - txtReceive.Text Quan sát ghi nhận thông báo Modem gởi đến máy tính Gởi lệnh cho Modem để thực kết nối sau hồi chng Viết lại chương trình để hiển thị thông báo kết nối Trang 37 + ... “OK” bắt đầu trình truyền kết thúc chuỗi “STOP” + Máy tính nhận sau nhận chuỗi “STOP” kết thúc q trình Trang 35 Phòng thí nghiệm Mơ & Truyền số liệu II - Thực hành Lập trình hệ thống KẾT NỐI... RTheshold = CommPort = (hay tuỳ theo máy tính) Chương trình cho Form1: Trang 34 Phòng thí nghiệm Mơ & Truyền số liệu Thực hành Lập trình hệ thống Private Sub cmdClear_Click() txtReceive.Text =... tín hiệu trả lời Trang 32 Phòng thí nghiệm Mơ & Truyền số liệu PHẦN II : I Thực hành Lập trình hệ thống 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 máy tính -