CHƯƠNGIIICƠSỞLÝTHUYẾTLẬPTRÌNHGIAODIỆNGIAOTIẾPVB III.1 Truyền thông nối tiếp dùng ActiveX Việc truyền thông nối tiếp Windows thực thông qua ActiveX có sẵn Microsoft Comm Control ActiveX dược lưu trữ file MSCOMM32.OCX Quá trìnhcó hai khả thực điều khiển trao đổi thông tin: - Điều khiển kiện: Truyền thông điều khiển kiện phương pháp tốt trình điều khiển việc trao đổi thông tin Quá trình điều khiển thực thông qua kiện OnComm - Hỏi vòng: Quá trinh điều khiển phương pháp hỏi vòng thực thông qua kiểm tra giá trị thuộc tính CommEvent sau chu kỳ để xác định xem có kiện xảy hay không Thông thường phương pháp sử dụng cho chươngtrình nhỏ ActiveX MsComm bổ sung vào Visual Basic Project thông qua menu Project > Components: III.2 Các thuộc tính Settings: Xác định tham số cho cổng nối tiếp Cú pháp: MSComm1.Settings = ParamString MSComm1: tên đối tượng ParamString: chuỗi có dạng sau: "BBBB,P,D,S" BBBB: tốc độ truyền liệu (bps) 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 giá trị: Giá trị Mô tả O Odd (kiểm tra lẻ) E Even (kiểm tra chẵn) M Mark (luôn 1) S Space (luôn 0) N Không kiểm tra D: số bit liệu (4, 5, 6, hay 8), mặc định bit S: số bit stop (1, 1.5, 2) VD: MSComm1.Settings = "9600,O,8,1" xác định tốc độ truyền 9600bps, kiểm tra parity chẵn với bit stop bit liệu � CommPort: Xác định số thứ tự cổng truyền thông, cú pháp: MSComm1.CommPort = PortNumber PortNumber giá trị nằm khoảng từ � 99, mặc định VD: MSComm1.CommPort = xác định sử dụng COM1 � PortOpen: Đặt trạng thái hay kiểm tra trạng thái đóng / mở cổng nối tiếp Nếu dùng thuộc tính để mở cổng nối tiếp phải sử dụng trước thuộc tính Settings CommPort Cú pháp: MSComm1.PortOpen = True | False Giá trị xác định True thực mở cổng False để đóng cổng đồng thời xoá nội dung đệ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 = MSComm1.PortOpen = True � Các thuộc tính nhận liệu: Input: nhận chuỗi ký tự xoá khỏi đệm Cú pháp: InputString = MSComm1.Input Thuộc tính kết hợp với InputLen để xác định số ký tự đọc vào Nếu InputLen = đọc toàn liệu có đệm InBufferCount: số ký tự có đệm nhận Cú pháp: Count = MSComm1.InBufferCount Thuộc tính dược dùng để xoá đệm nhận bắng cách gán giá trị MSComm1.InBufferCount = InBufferSize: đặt xác định kích thước đệm nhận (tính byte) Cú pháp: MSComm1.InBufferCount = NumByte Giá trị măc định 1024 byte Kích thước đệm phải đủ lớn để tránh tình trạng liệu VD: Đọc toàn nội dung đệm nhận có liệu MSComm1.InputLen = If MSComm1.InBufferCount Then InputString = MSComm1.Input End If � Các thuộc tính xuất liệu: Bao gồm thuộc tính Output, OutBufferCount OutBufferSize, chức thuộc tính giống thuộc tính nhập � CDTimeout: Đặt xác định khoảng thời gian lớn (tính ms) từ lúc phát sóng mang lúc có liệu Nếu khoảng thời gian mà chưa có liệu gán thuộc tính CommEvent CDTO (Carrier Detect Timeout Error) tạo kiện OnComm Cú pháp: MSComm1.CDTimeout = NumTime � DSRTimeout: Xác định thời gian chờ tín hiệu DSR trước xảy kiện OnComm � CTSTimeout: Đặt xác định khoảng thời gian lớn (tính ms) đợi tín hiệu CTS trước đặt thuộc tính CommEvent CTSTO tạo kiện OnComm Cú pháp: MSComm1.CTSTimeout = NumTime � CTSHolding: Xác định có tín hiệu CTS hay chưa, tín hiệu dùng cho trình bắt tay phần cứng (cho biết DCE sẵn sàng nhận liệu), trả giá trị True hay False � DSRHolding: Xác định trạng thái DSR (báo hiệu tồn DCE), trả giá trị True hay False � CDHolding: Xác định trạng thái CD, trả giá trị True hay False � DTREnable: Đặt hay xoá tín hiệu DTR để báo tồn DTE Cú pháp: MSComm1.DTREnable = True | False � RTSEnable: Đặt hay xoá tín hiệu RTS để yêu cầu truyền liệu đến DTE Cú pháp: MSComm1.RTSEnable = True | False � NullDiscard: Cho phép nhận ký tự NULL (rỗng) hay không (= True: cấm) Cú pháp: MSComm1.NullDiscard = True | False ... COM1 � PortOpen: Đặt trạng thái hay kiểm tra trạng thái đóng / mở cổng nối tiếp Nếu dùng thuộc tính để mở cổng nối tiếp phải sử dụng trước thuộc tính Settings CommPort Cú pháp: MSComm1.PortOpen... MSComm1.CTSTimeout = NumTime � CTSHolding: Xác định có tín hiệu CTS hay chưa, tín hiệu dùng cho trình bắt tay phần cứng (cho biết DCE sẵn sàng nhận liệu), trả giá trị True hay False � DSRHolding: