1. Trang chủ
  2. » Công Nghệ Thông Tin

xây dựng giao tiếp computer thông qua cổng RS232

77 235 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 77
Dung lượng 15,97 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

RS232 là một chuẩn giao tiếp nối tiếp dùng định dạng không đồng bộ, kết nối nhiều nhất là với 2 thiết bị, chiều dài kết nối lớn nhất cho phép để đảm bảo dữ liệu là 50 – 100 feet ( 12.7 đến 25.4 m), tốc độ 20kBíts đôi khi là tốc độ 115 k Bíts với một số thiết bị đặc biệt. Để biết được các tham số của chuẩn giao tiếp RS232 trong hệ điều hành của bạn như thế nảo thì bạn kích phải chuột vào biểu tượng My Computer , chọn Properties, chọn Tab HardWare chọn Device Manager sẽ có một tree hiện ra. Bạn chọn Port( Com LPT), kích chuột phải vào Communication Port( COM1). Chuyển sang tab Port Setting sẽ thấy được các tham số mà chúng ta cần thiết lập bao gồm tần số bus, Data Bits, Parity Bits, Stop Bits, Handshaking,..

Trang 1

‐ Giới thiệu chuẩn giao tiếp RS232 và điều khiển Active X Microsoft

Communication 6.0( MSComm): cách tính chất và cách thiết lập tham số tối ưu cho điều khiển

‐ Lập trình ứng dụng giao tiếp trên cơ sở sử dụng phần mềm Visual C++ trong

bộ công cụ Visual ‐ Studio 6.0 của Microsft:

+ Thiết kế giao diện chương trình

+ Viết mã cho chương trình

1 Điều khiển MSComm

1.1 Chuẩn giao tiếp RS232

RS232 là một chuẩn giao tiếp nối tiếp dùng định dạng không đồng bộ, kết nốinhiều nhất là với 2 thiết bị, chiều dài kết nối lớn nhất cho phép để đảm bảo dữ liệu là 50 – 100 feet ( 12.7 đến 25.4 m), tốc độ 20kBít/s đôi khi là tốc độ 115 k Bít/s với một số thiết bị đặc biệt

Để biết được các tham số của chuẩn giao tiếp RS232 trong hệ điều hành của

bạn như thế nảo thì bạn kích phải chuột vào biểu tượng My Computer , chọn Properties, chọn Tab HardWare chọn Device Manager sẽ có một tree hiện

ra Bạn chọn Port( Com & LPT), kích chuột phải vào Communication

Port( COM1) Chuyển sang tab Port Setting sẽ thấy được các tham số mà

chúng ta cần thiết lập bao gồm tần số bus, Data Bits, Parity Bits, Stop Bits, Handshaking,

Trang 2

Hình 1.1: Chọn My Computer ‐> Properties

Trang 3

Hình 1.2: Chọn Device Manager

Hình 1.3: Chọn Properties của Communication Port( COM1)

Hình 1.4: Chọn thẻ Port Setting để biết tham số

Đó chính là lí do tại sao tôi lại chọn các tham số đưa vào trong các ComboBoxnhư ở dưới chương trình này

Trang 4

1.2 Các thuộc tính của MSComm

MSComm là một điều khiển ActiveX dùng trong truyền thông nối tiếp Các

tính chất của điều khiển này được dùng để thiết lập giao tiếp với các thiết bị ngoại vi qua cổng RS232 Do đó tôi xin giới thiệu với các bạn điều khiển này trong Visual Basic vì cách gọi thuộc tính đơn giản của VB Từ đó sẽ lấy làm cơ sở

để lập trình trên Visual C++

1.2.1 Điều khiển MSComm trong Visual Basic

Tất cả các tính chất này bạn có thể tìm tại thư viện MSDN July 2001 theo đường dẫn như sau ở tab contents:

MSDN Library ‐ July 2001 / Visual Tools and Languages/ Visual

Studio 6.0

Documentation / Visual Basic Documentation / Reference/ Control

Reference / ActiveX

Control/ MSComm Control

Các tính chất của MSComm được sắp xếp theo chức năng:

Thiết lập tham số cho cổng:

+ CommID: trả lại handles đồng nhất tới thiết bị truyền thông, có kiểu Long.

Tính chất này không có lúc thiết kế mà chỉ có khi thi hành, thuộc tính này là

ReadOnly

+ CommPort: dạng object.CommPort = value Value là chỉ số của cổng

Com có giá trị từ 1 ‐> 16 và mặc định có giá trị =1 Các bạn 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 + InBuferSize: thiết lập hoặc trả lại kích thước của bộ đệm nhận, tính =

byte Mặc định là 1024 byte Các bạn không được nhầm lẫn với đặc tính

InBufferCount là số byte đang chờ trong bộ đệm nhận

+ InputLen : object.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 = InputLen thì thuộc tính Input sẽ trả lại kí tự rỗng “” Ví thế bạn 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: object.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 sâu

Value=1 hay = 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: object.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í

Trang 5

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)

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

+ ParityReplace: thiết lập và trả lại kí tự thay thế kí tự không đúng trong

lỗi giống nhau

+ PortOpen: thiết lập và trả lại tính trạng của cổng(đóng hoặc mở)

object.PortOpen [ = value ] value = true cổng mở value =false cổng đóng

và xóa toàn bộ dữ liệu trong bộ đệm nhận và truyền Cần phải thiết lập thuộc tính CommPort đúng với tên của cổng trước khi mở cổng giao tiếp Thêm vào đó,cổng giao tiếp của thiết bị của bạn phải hỗ trợ giá trị trong thuộc tính Setting thìthiết bị của bạn mới hoạt động đúng, còn không thì nó sẽ hoạt động rất dở hơi nếu không nói là nó chạy không tốt Đường DTR và

RTS luôn giữ lại trạng thái của cổng

+ RthresHold: object.Rthreshold [ = value ] value kiểu số nguyên Thiết

lập số kí tự nhận được trước khi gây lên sự kiện comEvReceive Mặc định = 0 tức

là không có sự kiện OnComm khi nhận được dữ liệu Thiết lập = 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

+ Settings: object.Settings [ = value ] thiết lập hoặc trả lại các thông số

tần số baud, bít dữ liệu, bít chẵn lẻ, bít stop Nếu Value không có giá trị khi mở

sẽ gây ra lỗi 380 (Invalid property value)

+ SThreshold: thiết lập và 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 = 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 =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 = 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

Truyền nhận dữ liệu:

+ 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 đó Sau đây là một số hằng số lỗi:

comEventBreak 1001 Xảy ra khi nhận được một tín hiệu Break

comEventFrame 1004 Lỗi hệ thống Phần cứng phát hiện ra một lỗi hệ thống

Trang 6

comEventTxFull 1010

xảy ra khi bộ đệm truyền bị đầy Bộ đệm truyền bị đầy trong khi ghi dữ liệu lớn vào bộ đệm

comEventDCB 1011 Một lỗi không mong muốn khi đang khôi phục lại

khỗi điều khiển thiết bị( DCB – Device Control Block) cho cổng

Một số sự kiện :

comEvSend 1 Xảy ra khi số kí tự trong bộ đệm truyền nhỏ hơn giá

trị SthresHold

RcomEvCTS 3 Xảy ra khi có thay đổi trong đường CTS( Clear To Send)

comEvDSR 4 Xảy ra khi thay đổi trong đường DSR( Data Set

Ready) Sự kiện này chỉ xảy ra khi đường DSR thay đổi từ 1 ‐> 0

comEvCD 5 Xảy ra khi có thay đổi trong đường CD( Carrier Detect)

comEvRing 6 Phát hiện chuông (Ring).Một số UART không hỗ trợ

sự kiện này

Xảy ra khi nhận được kí tự kết thúc file ( kí tự 26 trong bảng mã ASCII)

+ EOFEnable : object.EOFEnable [ = value ] quyết định các hành động

nếu MSComm tìm thấy kí tự kết thúc file Nếu value=true khi tìm thấy kí tự kết

thúc file thì sẽ gây lên sự kiện comEvEOF trong OnCommEvent Nếu value= false thì sẽ không gây lên sự kiện này + InBufferCout: trả lại số kí tự đang có

trong bộ đệm nhận Bạn có thể xoá bộ đệm nhận bằng cách đặt thuộc tính này

=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

+ Input: nhận và xoá dữ liệu trong bộ đệm nhận

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

=

Trang 7

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

+ OutBufferCount: trả lại số kí tự trong bộ đệm truyền

+ 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ếutruyền kiểu nhị phân thì cho cho Output= variant = một mảng kiểu Byte Bắt tay( handshaking):

+ Break : thiết lập hoặc xoá tín hiệu object.Break [ = value] value = true

hoặc false Khi set value= true thì thông số Break này sẽ gửi một tín hiệu break.Tín hiệu break trì hoàn việc truyền dữ liệu và đưa đường truyền vào trạng thái break tới khi mà value = false

+ CDHolding: quết định xem sự truyền này đến đâu bằng cách truy vấn

đường CD( Carrier Detect) Carrier Detect là tín hiệu gửi từ modem tới máy tính kết nối với nó thống báo rằng nó đang online Nếu giá trị = true thì nó đường CDđang ở mức cao, nếu = false thì đường dây này đang ở mức thấp Tính chất này không có trong lúc thiết kế chỉ có trong khi chạy chương trình.Carrier Detect được biết như là Receive Line Signal Detect (RLSD)

+ CTSHolding: quết định khi nào bạn gửi dữ liệu bằng cách truy vấn trạng

thái đường Clear To Send (CTS) Thông thường tín hiệu CTS được gửi từ modem tới máy tính kết nối với nó để báo rằng đang quá trình truyền dữ liệu Thuộc tínhReadonly chỉ xuất hiện khi chạy chương trình Đường Clear To Send dùng trong

RTS/CTS (Request To Send/Clear To Send) bắt tay phần cứng CTSHolding cho

bạn một cách để tự tay dò đường Clear To Send nếu bạn cần biết trạng thái của

+ DSRHolding: biết trạng thái của đường Data Set Ready (DSR) Tín hiệu

Data Set Ready truyền từ modem tới máy tính nối với nó để thông báo rằng modem đã sẵn sàng hoạt động Tính chất này dùng khi viết Data Set

Ready/Data Terminal Ready handshaking routine cho máy Data Terminal

Equipment (DTE)‐ máy trang bị đầu cuối dữ liệu

+ DTREnable: tính chất này quyết định khi nào cho phép đường Data

Terminal Ready (DTR) trong truyền thông Tín hiệu DTR gửi từ máy tính tới

modem đẻ báo rằng máy tính sẵn sàng là nơi nhận dữ liệu Khi DTREnable = true thì đường Data Terminal Ready set lên cao khi cổng mở, và thấp khi cổng đóng Nếu DTREnable = false thì đường đó luôn mức thấp Trong phần lớn

trường hợp set đường Data Terminal Ready thành thấp để hang up telephone

+ Handshaking: thiết lập và trả lại giao thức bắt tay phần cứng

Trang 8

comRTS 2 Bắt tay RTS/CTS (Request To Send/Clear To Send)

comRTSXOnXOff 3 Dùng cả bắt tay Request To Send and XON/XOFF

Handshaking chỉ là giao thức truyền thông nội tại quyết định bởi dữ liệu

nào được truyền từ cổng phần cứng tới bộ đệm nhận Khi kí tự của dữ liệu tới cổng nối tiếp, thiết bị truyền thông sẽ chuyển nó vào trong bộ đệm nhận và chương trình của bạn có thể đọc chúng Nếu không có bộ đệm dữ liệu hoặc chương trình của bạn cần đọc kí tự trực tiếp từ phần cứng , bạn có thể mất dữ

liệu bởi vì kí tự từ phần cứng đến rất nhanh Giao thức Handshaking đảm bảo

dữ liệu không bị mất, khi dữ liệu đến cổng quá nhanh thì thiết bị truyền thông sẽchuyển dữ liệu vào trong bộ đệm nhận

+ RTSEnable: quết định khi nào cho phép đường Request To Send (RTS), Tín

hiệu RTS từ máy tính tới modem để yêu cầu được tryền dữ liệu Khi RTSEnable =true thì đường RTS mức cao khi cổng mở, tích mức thấp khi cổng đóng Và hiển nhiên khi RTSEnable thì đường RTS luôn mức thấp.RTS dùng trong RTS/CTS hardware handshaking RTSEnable

cho phép bạn dò đường RTS khi cần biết tình trạng của đường này

Các tính chất trên không có lúc thiết kế giao diện mà chỉ có lúc chạy

chương trình ( dùng trong viết code)

1.1.2 Điều khiển MSComm trong Visual C++

Trên đây là các tham số của điều khiển MSComm trong VB

Trong Visual C++ , mỗi một điều khiển được định nghĩa trong một lớp riêng Và MSComm cũng không phải là ngoại lệ

Với các tham số ở trên các bạn hoàn toàn có thể áp dụng rất là tốt cho lập trình với VC++ bởi lẽ các tham số này bạn có thể lấy giá trị hoặc thiết lập tham

số cho chúng tương ứng bằng các hàm thành viên cửa lớp như Get_thuộctính hoặc Set_thuộctính

Ví dụ, bạn muốn thiết lập dùng cổng COM1 chẳng hạn thì dùng thuộc tính CommPort ở trên và chỉ thêm tiền tố Set_ nếu muốn thiết lập và Get_ nếu muốnlấy giá trị này

Sau đây là lớp MSComm là một lớp kế thừa từ lớp cở sở CWnd, các bạn có thểtham khảo Các bạn chú ý về các kiều dữ liệu cửa các tham số và giá trị trả về của các hàm Việc chuyển đổi giữa các kiểu dữ liệu này các bạn có thể tham khảo tại thư viện MSDN

Microsoft July 2001 bằng cách Search

Key Word: chính là các từ khoá chỉnh là các kiểu dữ liệu đó.( như CString,…)

Trang 9

class CMSComm : public CWnd

return clsid;

}

virtual BOOL Create(LPCTSTR lpszClassName,

LPCTSTR lpszWindowName, DWORD dwStyle,

const RECT& rect,

CWnd* pParentWnd, UINT nID,

CCreateContext* pContext = NULL)

{ return CreateControl(GetClsid(), lpszWindowName, dwStyle, rect, pParentWnd, nID);

}

BOOL Create(LPCTSTR lpszWindowName, DWORD dwStyle,

const RECT& rect, CWnd* pParentWnd, UINT nID,

CFile* pPersist = NULL, BOOL bStorage = FALSE,

BSTR bstrLicKey = NULL)

{ return CreateControl(GetClsid(), lpszWindowName, dwStyle, rect,

pParentWnd, nID, pPersist, bStorage, bstrLicKey); }

Trang 10

void SetCommPort(short nNewValue);

Trang 11

};

VARIANT GetInput(); void

SetCommEvent(short nNewValue);

short GetCommEvent();

void SetEOFEnable(BOOL

bNewValue); BOOL

GetEOFEnable(); void

SetInputMode(long nNewValue);

long GetInputMode();

Các bạn xem kĩ các hàm, các phép toán trên có thể thấy là kiểu dữ liệu dùng làm tham số cho hàm hay giá trị trả về của các hàm hầu hết là các kiểu dữ liệu

cơ bản như BOOL, short, Chỉ đặc biết là có kiểu dữ liệu VARIANT

VARIANT là một cấu trúc mà dữ liệu nó chứa là một kiểu union được định

nghĩa như sau:

typedef struct FARSTRUCT tagVARIANT VARIANT; typedef

struct FARSTRUCT tagVARIANT VARIANTARG;

typedef struct tagVARIANT

{ VARTYPE vt;

unsigned short wReserved1;

unsigned short wReserved2; unsigned short wReserved3; union { Byte bVal;

Short iVal;

long lVal;

float fltVal;

double dblVal;

VARIANT_BOOL boolVal;

SCODE scode;

CY cyVal;

DATE date;

BSTR bstrVal;

DECIMAL FAR* pdecVal

IUnknown FAR* punkVal;

IDispatch FAR* pdispVal;

SAFEARRAY FAR* parray;

Byte FAR* pbVal;

short FAR* piVal; long FAR* plVal; float FAR* pfltVal; double FAR* pdblVal; VARIANT_BOOL FAR* pboolVal;

SCODE FAR* pscode;

CY FAR* pcyVal;

DATE FAR* pdate;

BSTR FAR* pbstrVal;

IUnknown FAR* FAR* ppunkVal;

IDispatch FAR* FAR* ppdispVal; SAFEARRAY FAR* FAR* pparray;

VARIANT FAR* pvarVal; void FAR* byref;

Trang 12

char cVal; unsigned short uiVal; unsigned long ulVal; int intVal; unsigned int uintVal; char FAR * pcVal; unsigned short FAR * puiVal; unsigned long FAR * pulVal; // VT_BYREF|VT_UI4 int FAR * pintVal; unsigned int FAR * puintVal;

}; };

Các bạn để ý thấy rằng kiểu VARIANT dùng làm tham số cho hàm SetInput

và là kiểu trả về của hàm GetOutput Mà với kiểu truyền kiểu dạng Text chúng

ta truyền dữ liệu ra cổng là dạng xâu kí tự thì chúng ta chuyển đối giữ kiểu VARIANT sang kiểu kí tự CString như thế nào?

‐ Chuyển từ kiểu CString ‐> VARIANT: tôi dùng lớp ColeVariant ( các bạn có

thể tra trong MSDN dùng tab Index) là dạng đóng gói của kiểu cấu trúc

VARIANT, lớp này có hàm khởi tạo COleVariant( CString& strSrc ); và do đó

nó có thể làm tham số cho hàm SetInput của MSComm Vì vậy chúng ta chỉ cần khai báo một biến ColeVariant là xong

CString data_tosend = “Example”;

CodeVariant temp(data_tosend);

m_mscomm1.SetInput(temp);

‐ Chuyển từ kiểu VARIANT sang kiểu CString Các bạn xem lại định nghĩa cấu trúc VARIANT ở trên xem có biến nào có kiểu trả về kiểu tương thích với kiểu CString( tức có thể ép kiểu để trở thành kiểu CString)

CString m_strData = (CString) data.bstrVal;

1.3 Cách thiết lập tối ưu cho ứng dụng

Để cho ứng dụng có thể đọc ngay dữ liệu khi bắt đầu có trong bộ đệm nhận thì các bạn nên đặt thuộc tính RthresHold = 1

Trang 13

Ngoài ra các bạn cần quan tâm đến các tham số: CommPort, Settings,

Rthreshold, SthresHold,PortOpen, InputLen, InputBuffer, OutputBuffer,

InBufferSize, InputMode, OutBufferSize

hiển thị trên EditBox này Chú ý:

Để có thể test luôn chương trình các bạn nối tắt chân 2 và chân 3 của RS232 lại với nhau chính là nối chân RxD và TxD để chúng ta truyền dữ liệu ra RS232 sau đó nhận dữ liệu luôn Đây là ví dụ test đơn giản không có bắt tay phần cứng

Trang 14

Hình 2.2: Sơ đồ đấu chân của RS232

2.2 Thiết kế giao diện cho chương trình

2.2.1 Tạo dự án “RS232TUT”

Khởi động Visual C++, chọn New từ menu File

Trang 15

Hình 2.3: Chọn New từ menu file

Hình 2.4: Chọn MFC Application(exe), tên dự án, nơi chứa dự án

Hình 2.5: Chọn Dialog based

Trang 16

Hình 2.6: Nhấn Next tiếp tục

Hình 2.7: chọn như mặc định, nhấn Next luôn

Trang 17

Hình 2.8: Kích finish để kết thúc việc tạo dự án

Giao diện của ứng dụng ban đầu như sau:

Hình 2.9: Giao diện ban đầu

2.2.2 Thêm điều khiển ActiveX Microsoft Communication

6.0

Đầu tiên bạn dùng nút Delete xoá 2 nút OK,Cancel và dòng văn bản tĩnh

TODO

Trang 18

Từ menu Project chọn Add to Project Menu con hiện ra bạn chọn Components and Controls:

Hình 2.10: Chọn Components Controls

Hộp thoại Components and Control Gallery xuất hiện bạn chọn

Regestered ActiveX Controls(đây là thư mục chứa các điều khiển

ActiveX):

Hình 2.11: Chọn thư mục đầu tiên

Trong thư mục Registered ActiveX Controls bạn chọn điều khiển mà

mình cần Microsoft Communications Control, version 6.0 Kích OK

Trang 19

Hình 2.12: Chọn Microsoft Communication Control, version 6.0

Hộp thoại yêu cầu bạn xác nhận có thêm điều khiển này vào không, chọn

OK

Hình 2.13: Chọn OK để thêm điều khiển

Khi đó chúng ta sẽ có được một lớp mới CMSComm là lớp dẫn xuất của lớp cơ sở CWnd Lớp này được khai báo trong file MSComm.h và định nghĩa trong file MSComm.cpp

Trang 20

Hình 2.14: Chọn tên lớp, tên header file, file thực thi như mặc định

Nhấn Close để đóng hộp thoại

Trang 21

Hình 2.15: Đóng cửa sổ Components and Controls Gallery

Bạn thêm điều khiển MSComm vào hộp giao diện bằng cách gắp thả

như với các điều khiển thông thường khác

Hình 2.16: Thêm điều khiển MSComm

Thế là các bạn đã cho được ứng dụng MSComm vào trong Dialog

Trang 22

2.2.3 Thêm các điều khiển khác

2.2.3.1 Thêm các Group Box

Hình 2.17: Thêm GroupBox1

Trang 23

Hình 2.18: Thêm GroupBox2

Hình 2.19: Thêm GroupBox3

Trang 24

Hình 2.20: Thêm GroupBox4

Hình 2.21: Thêm GroupBox5

Trang 25

Hình 2.22: Thêm GroupBox6

Hình 2.23: Thêm GroupBox7

Trang 26

Hình 2.24: Thêm GroupBox8

Hình 2.25: Thêm GroupBox9 Thay đổi thuộc tính cho

GroupBox1:

Trang 27

Hình 2.26: Kích chuột vào GroupBox1 chọn Properties

Hình 2.27: Thiết lập thuộc tính Caption: Settings Các bạn làm tương tự với các GroupBox khác, theo hình vẽ dưới đây:

Trang 28

Hình 2.28: Thiết lập thuộc tính cho GroupBox2

Hình 2.30: Thiết lập thuộc tính cho GroupBox3

Trang 29

Hình 2.31: Thiết lập thuộc tính cho GroupBox4

Hình 2.32: Thiết lập thuộc tính cho GroupBox5

Trang 30

Hình 2.33: Thiết lập thuộc tính cho GroupBox6

Hình 2.34: Thiết lập thuộc tính cho GroupBox7

Trang 31

Hình 2.34: Thiết lập thuộc tính cho GroupBox8

Hình 2.35: Thiết lập thuộc tính cho GroupBox9

Tiếp theo các bạn làm cho các GroupBox 4‐>9 có kích thước bằng nhau và căn lề đẹp hơn

Trang 32

Hình 2.36: Làm cho các GroupBox có cùng kích thước

Hình 2.37 Làm cho các GroupBox 7‐>9 có khoảng cách bằng nhau

Trang 33

Hình 2.38: Làm cho các GroupBox này thẳng hàng với nhau

Hình 2.39: Kết quả sau khi làm cho cùng kích thước

2.2.3.2 Thêm các EditBox

Trang 34

Hình 2.40: Thêm EditBox1

Hình 2.41: kích chuột phải, chọn Properties

Trang 35

Hình 2.42: Thiết lập ID cho EditBox1

Hình 2.43: Thiết lập thuộc tính ReadOnly và MultiLine

Trang 36

Hình 2.44: Thêm EditBox2

Hình 2.45: Chọn Properties

Trang 37

Hình 2.46: Thuộc tính của EditBox

2.2.3.3 Thêm các Button

Hình 2.47: Thêm Button1

Trang 38

Hình 2.48: Thêm Button2

Hình 2.49: Thêm Button3

Ngày đăng: 22/08/2017, 10:44

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w