Truyen2U.Net quay lại rồi đây! Các bạn truy cập Truyen2U.Com. Mong các bạn tiếp tục ủng hộ truy cập tên miền mới này nhé! Mãi yêu... ♥

Chương 4:

câu 1: cấu trúc cổng nối tiếp.

Cổng nối tiếp được sử dụng để truyền dữ liệu hai chiều giữa máy tính và ngoại vi, có các ưu điểm sau:

-  Khoảng cách truyền xa hơn truyền song song.

-  Số dây kết nối ít.

-  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ị trong lúc máy tính đang làm việc.

-  Có thể cung cấp nguồn cho các mạch điện đơn giản

Các thiết bị ghép nối chia thành 2 loại: DTE (Data Terminal Equipment) và DCE (Data Communication Equipment). DCE là các thiết bị trung gian như MODEM còn DTE là các thiết bị tiếp nhận hay truyền dữ liệu như máy tính, PLC, vi điều khiển, … Việc trao đổi tín hiệu thông thường qua 2 chân RxD (nhận) và TxD (truyền). Các tín hiệu còn lại có chức năng hỗ trợ  để thiết lập và  điều khiển quá trình truyền,  được gọi là các tín hiệu bắt tay (handshake). Ưu điểm của quá trình truyền dùng tín hiệu bắt tay là có thể kiểm soát đường truyền.

Tín hiệu truyền theo chuẩn RS-232 của EIA (Electronics Industry Associations).

Chuẩn RS-232 quy định mức logic 1 ứng với điện áp từ -3V đến -25V (mark), mức logic 0 ứng với điện áp từ 3V đến 25V (space) và có khả năng cung cấp dòng từ 10 mA đến 20 mA.

Ngoài ra, tất cả các ngõ ra đều có đặc tính chống chập mạch.

Chuẩn RS-232 cho phép truyền tín hiệu với tốc độ đến 20.000 bps nhưng nếu cáp truyền đủ ngắn có thể lên đến 115.200 bps.

Các phương thức nối giữa DTE và DCE:

- Đơn công (simplex connection): dữ liệu chỉ được truyền theo 1 hướng.

- Bán song công ( half-duplex): dữ liệu truyền theo 2 hướng, nhưng mỗi thời điểm chỉ được truyền theo 1 hướng.

- Song công (full-duplex): số liệu được truyền đồng thời theo 2 hướng.

- sơ đồ chân (hình vẽ)

Câu 2: truyên thông 2 nút RS232

Các sơ đồ khi kết nối dùng cổng nối tiếp:

Hình vẽ (Kết nối đơn giản trong truyền thông nối tiếp)

 Khi thực hiện kết nối như trên, quá trình truyền phải bảo đảm tốc độ ở đầu phát và thu giống nhau. Khi có dữ liệu đến DTE, dữ liệu này sẽ được đưa vào bộ đệm và tạo ngắt. Ngoài ra, khi thực hiện kết nối giữa hai DTE, ta còn dùng sơ đồ sau:

-hình vẽ (Kết nối trong truyền thông nối tiếp dùng tín hiệu bắt tay)

 Khi DTE1 cần truyền dữ liệu thì cho DTR tích cực Æ tác động lên DSR của DTE2 cho biết sẵn sàng nhận dữ liệu và cho biết đã nhận được sóng mang của MODEM (ảo). Sau đó, DTE1 tích cực chân RTS để tác động đến chân CTS của DTE2 cho biết DTE1 có thể nhận dữ liệu. Khi thực hiện kết nối giữa DTE và DCE, do tốc độ truyền khác nhau nên phải thực hiện điều khiển lưu lượng. Quá trinh điều khiển này có thể thực hiện bằng phần mềm hay phần cứng. Quá trình điều khiển bằng phần mềm thực hiện bằng hai ký tự Xon và Xoff.

Ký tự Xon được DCE gởi đi khi rảnh (có thể nhận dữ liệu). Nếu DCE bận thì sẽ gởi ký tự Xoff. Quá trình điều khiển bằng phần cứng dùng hai chân RTS và CTS. Nếu DTE muốn truyền dữ liệu thì sẽ gởi RTS để yêu cầu truyền, DCE nếu có khả năng nhận dữ liệu (đang rảnh) thì gởi lại CTS. 

Câu3: chức năng, các bước đưa mscomm vào VB

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:

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

 Câu 4: sting, commport, portopen của mscomm

*  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"

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

*  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âu 5: các thuộc tính nhập dữ liệu: input, inbuffercount, và inbuffersize của mscomm

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

 InputString = MSComm1.Input

End If 

Câu 6: out put, out bufersize, cut butffer Count

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. 

Câu 7: các sự kiện và lỗi xảy ra trong commevent

Trả lại các lỗi truyền thonog 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

Các lỗi truyền thông:

Lỗi                     Giá trị                  Mô tả

ComBreak       1001                   Nhận tín hiệu Break

ComCTSTO     1002                  Carrier Detect Timeout

ComFrame      1004                  Lỗi khung

ComOver          1006                  Phần cứng không đọc ký tự trước khi gởi ký tự kế

ComCDTO       1007                  Carrier Detect Timeout

ComRxOver      1008                 Tràn bộ đệm nhận

ComRxParity     1009                 Lỗi parity

ComTxFull         1010               Tràn bộ đệm truyền

Bạn đang đọc truyện trên: Truyen2U.Com

Tags: