Giao tiếp cổng nối tiếp dùng Visual Basic 6.0 sử dụng

Một phần của tài liệu Viết chương trình máy tính hỗ trợ điều khiển và thu thập dữ liệu cho bộ điều tốc điện tử của động cơ Yanmar-3SM (Trang 57)

a. 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 được lưu trữ trong file MSCOMM32.OCX.

ActiveX MSComm được bổ sung vào một Visual Basic Project thơng qua Menu Project > Components.

Hình 2.23 – Cách bổ sung ActiveX Microsoft Comm Control vào VB 6.0

Hình 2.24 – Biểu tượng và bảng thuộc tính của ActiveX Microsoft Comm Control

b. Các tham số và 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.

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

Bảng 2.9 – Giá trị hợp lệ của tốc độ truyền dữ liệu

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

Bảng 2.10 – Giá trị kiểm tra chẵn lẻ

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)

Ví dụ: MSComm1.Settings = “9600, N, 8, 1” sẽ xác định tốc độ truyền 9600bps, khơng kiểm tra parity 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ần phải thiết lập thơng số này trước khi mở cổng. Sẽ cĩ lỗi “error 68 (Device unavailable) nếu như khơng mở được cổng này.

Cú pháp: MSComm1.CommPort = PortNumber

PortNumber là giá trị nằm trong khoảng từ 1 đến 16, mặc định là 1. Ví dụ: MSComm1.CommPort = 1 xác định sử dụng COM 1

PortOpen

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 xĩa của các bộ đệm truyền nhận.

Ví dụ: Mở cổng COM1 với tốc độ truyền 9600bps MSComm1.Settings = “9600,N,8,1”

MSComm1.CommPort = 1 MSComm1.PortOpen = True

Input

Nhận một chuỗi ký tự và xĩa khỏi bộ đệm. Nếu InputMode là ComInputModeText thì giá trị trả về sẽ là một xâu tức cĩ kiểu String, dữ liệu dạng text trong một biến kiểu Variant. Nếu InputMode = ComInputModeBinary thì thuộc tính này sẽ trả lại dữ liệu dạng nhị phân dưới dạng một mảng kiểu byte trong một biến Variant.

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.

InBufferSize (adsbygoogle = window.adsbygoogle || []).push({});

Cú pháp: MSComm1.InBufferSize [=value]

Thiết lập hoặc trả lại kích thước của bộ đệm nhận, tính bằng byte. Mặc định là 1024 byte. Khơng được nhầm lẫn với đặc tính InBufferCount là số byte đang chờ trong bộ đệm nhận.

InBufferCount

Cú pháp: MSComm1.InBufferCount [=value]

Trả lại số ký tự đang cĩ trong bộ đệm nhận, cĩ thể xĩa bộ đệm nhận bằng cách đặt thuộc tính này bằng 0. Khơng nhầm với thuộc tính InBufferSize là tổng kích thước của bộ đệm nhận.

InputLen

Cú pháp: MSComm1.InputLen [=value]

Thiết lập hoặc trả lại số byte mỗi lần thuộc tính Input đọc trong bộ đệm nhận. Mặc định giá trị value = 0, tức là thuộc tính Input sẽ đọc hết nội dung của bộ đệm nhận khi thuộc tính này được gọi. Nếu số ký tự trong bộ đệm nhận khơng bằng InputLen thì thuộc tính Input sẽ trả lại ký tự rỗng “”. Vì thế cần phải chọn cách kiểm tra InBufferCount để chắc chắn số ký tự yêu cầu đã cĩ đủ trước khi dùng lệnh Input. Tính chất này rất là cĩ ích khi đọc dữ liệu một máy mà dữ liệu ra được định dạng bằng các khối cĩ kích thước cố định.

InputMode

Cú pháp: MSComm1.InputMode [=value]

Value = 0 hay ComInputModeText dữ liệu nhận được dạng văn bản kiểu ký tự theo chuẩn ANSI. Dữ liệu nhận được sẽ là một xâu. Value = 1 hay bằng ComInputModeBinary dùng nhận mọi kiểu dữ liệu như ký tự điều khiển nhúng, ký tự NULL,… Giá trị nhận được từ Input sẽ là một mảng kiểu Byte.

NullDiscard

Cú pháp: MSComm1.NullDiscard [=value]

Tính chất này quyết định ký tự trống cĩ được truyền từ cổng đến bộ đệm nhận hay khơng. Nếu value = True, ký tự này khơng được truyền. Value = False ký tự trống sẽ được truyền. Ký tự trống được định nghĩa theo chuẩn ASCII là ký tự 0 – chr$(0).

Output

Ghi dữ liệu vào bộ đệm truyền, cĩ thể truyền kiểu text hoặc kiểu nhị phân. Nếu truyền bằng kiểu text thì cho một biến Variant kiểu String, nếu truyền kiểu nhị phân thì cho Output = Variant bằng một mảng kiểu Byte.

OutBuferCount: trả lại số ký tự trong bộ đệm truyền.

OutBuferSize: giống như InBufferSize, mặc định là 512.

RthresHold

Cú pháp: MSComm1.Rthreshold [=value]

ComEvReceive. Mặc định bằng 0 tức là khơng cĩ sự kiện OnComm khi nhận được dữ liệu. Thiết lập bằng 1 tức là sự kiện OnComm xảy ra khi bất kỳ ký tự nào được chuyển đến bộ đệm nhận.

Sthreshold

Thiết lập và trả lại số ký tự nhỏ nhất được cho phép trong bộ đệm gửi để xảy ra sự kiện OnComm = ComEvSend. Theo mặc định, giá trị này bằng 0 tức là khi truyền sẽ khơng gây ra sự kiện OnComm. Nếu thiết lập thơng số này bằng 1 thì sự kiện OnComm xảy ra khi bộ đệm truyền rỗng. Sự kiện OnComm = ComEvSend chỉ xảy ra khi mà số ký tự trong bộ đệm truyền nhỏ hơn hoặc bằng Sthreshold. Nếu số ký tự trong bộ đệm này luơn lớn hơn Sthreshold thì sự kiện này khơng thể xảy ra.

Sự kiện OnComm

Sự kiện OnComm được phát sinh vào bất cứ khi nào giá trị của đặc tính CommEvent thay đổi.

Sự kiện: Private Sub MsComm_OnComm()

Đặc tính CommEvent chứa mã số của lỗi hay sự kiện phát sinh bởi sự kiện OnComm. Nên đặt các đặc tính Rthreshold hoặc Streshold bằng 0 để vơ hiệu bẫy sự kiện Receive and Send.

CommEvent trả lại phần lớn sự kiện giao tiếp hoặc cĩ lỗi. CommEvent xảy ra khi cĩ lỗi hoặc khi xảy ra sự kiện nào đĩ.

Chương 3

VIẾT CHƯƠNG TRÌNH (adsbygoogle = window.adsbygoogle || []).push({});

HỖ TRỢ ĐIỀU KHIỂN VÀ THU NHẬP DỮ LIỆU

CHO BỘ ĐIỀU TỐC ĐIỆN TỬ CỦA ĐỘNG CƠ YANMAR 3SM

3.1. Yêu cầu chung

Vì là chương trình hỗ trợ điều khiển và thu nhập dữ liệu nên cần cĩ độ tin cậy, sự chính xác cao.

Khi thay đổi đối tượng điều khiển thì khơng cần thay đổi thiết kế phần cứng mà chỉ cần thay đổi phần mềm điều khiển.

Chương trình gồm hai phần: phần giao diện và phần mã (code).

- Giao diện giao tiếp đơn giản, dễ hiệu chỉnh, đảm bảo thể hiện trực quan các dữ liệu truyền và nhận giữa máy tính và BĐT điện tử, khả năng hỗ trợ điều khiển cao: hiển thị trên bảng biểu, đồ thị và xuất sang File lưu trữ dữ liệu thu thập được.

- Mã chương trình đầy đủ, ngắn gọn và đúng đắn theo giải thuật điều khiển xây dựng.

Một phần của tài liệu Viết chương trình máy tính hỗ trợ điều khiển và thu thập dữ liệu cho bộ điều tốc điện tử của động cơ Yanmar-3SM (Trang 57)