1
ĐỀ TÀI NGHIÊN CỨU KHOA HỌC SINH VIÊN
Tên đề tài:
LẬP TRÌNH ĐIỀU KHIỂN CƠ CẤU CHẤP HÀNH PIEZO SỬ DỤNG CẢM BIẾN ĐO
CHUYỂN VỊ KIỂU TIẾP XÚC
Programming to control piezo actuator and contact displacement sensor
2
Mục lục
Mục lục 2
TÓM TẮT ĐỀ TÀI 3
I. Tổng quan về piezo 5
II. Piezo Actuator 9
III. Giao tiếp với cảm biến 13
IV. Lập trình giao diện 16
V. Mô hình thí nghiệm 30
VI. Kết quả thí nghiệm 32
Tài liệu tham khảo: 33
3
TÓM TẮT ĐỀ TÀI
Hiện nay, cơ cấu chấp hành piezo được dùng khá phổ biến trong các lĩnh vực : y học, gia công
chính xác, lắp ráp chính xác, MEM-NEM…Có nhiều hãng cung cấp loại thiết bị này như
Piezomechanik [1], Thorlab [2], Norliac [3],…
Tuy nhiên, việc sử dụng các cơ cấu chấp hành như trên có một số vấn đề khó khăn như sau:
(1) Loại cơ cấu chấp hành này chỉ mới phổ biến với nhưng chủng loại điều khiển
không hồi tiếp (openloop control)(Hình 1) [2]. Hiện nay ta việc điều khiển cơ cấu chấp hành
piezo chủ yếu thông qua lệnh điều chỉnh điện áp, người sử dụng rất cần có tín hiệu phản hồi
(feedback) cho phép điều khiển actuator đạt độ chính xác. Các chủng loại điều khiển có hồi
tiếp (feedback control) (Hình 2) chưa có nhiều, giới hạn về hành trình và lực đẩy, đồng thời
có giá thành đắt hơn rất nhiều lần so với các chủng loại không hồi tiếp [3].
Hình 1: Cơ cấu chấp hành Piezo không hồi tiếp
Hình 2: Cơ cấu chấp hành Piezo có hồi tiếp
(2) Các hãng chế tạo chỉ cung cấp thiết bị phần cứng và phần mềm dạng chương trình
thực thi (file .EXE) đơn giản mà không đưa ra chương trình có thư viện hàm điều khiển. Điều
này gây khó khăn trong việc sử dụng.
Nếu sẵn có các loại cảm biến chính xác thì việc lập trình điều khiển có hồi tiếp cho cơ cấu chấp
hành sử dụng cảm biến sẵn có ở bất kỳ loại nào miễn độ chính xác đạt mức yêu cầu là rất cần
thiết và cho phép sử dụng cơ cấu chấp hành tốt hơn.
4
Tại Trung tâm Đào tạo Bảo dưỡng công nghiệp hiện đang có cảm biến đo chuyển vị (Hình 3) với
độ chính xác cao (độ phân giải 0,2 µm), đồng thời ở đấy cũng có cơ cấu chấp hành piezo (Hình 4,
5). Trong điều kiện trên, việc lập trình điều khiển có hồi tiếp cho cơ cấu chấp hành piezo là khả
thi và rất cần thiết cho việc sử dụng hiệu quả cơ cấu chấp hành này.
Hình 3: Cảm biến đo chuyển vị
Hình 4: Cơ cấu chấp hành Piezo
Hình 5: Driver cho cơ cấu chấp hành Piezo
Kết quả của việc lập trình trên có thể ứng dụng trong cơ cấu tạo chuyển động thẳng độ phân giải
dưới µm (Hình 6) [4].
5
Hình 6: Cơ cấu tạo chuyển động thẳng độ phân giải dưới µm.
I. Tổng quan về piezo
1. Lịch sử phát triển:
Sự phát triển của vật liệu áp điện, thành phần, ứng dụng được phát hiện bởi những nghiên
cứu trong lĩnh vực liên quan đến vật liệu cách điện. Những đặc tính vật lý quan trọng của những
vật liệu này đã được biết đến một thời gian dài trước đó.
Năm 1758, Carl Wilcke phát hiện ra rằng chất điện môi phân cực được; phát hiện của ông ấy
đến sớm, tuy nhiên nó nhanh chóng bị lãng quên sau đó. Một dạng ban đầu của tụ điện là Leyden
jar được phát minh bởi Musschen-brock vào khoảng năm 1750. Vào năm 1837, Faraday chứng
minh khả năng của chất điện môi lên hiện tượng tĩnh điện.
Ảnh hưởng của hiện tượng áp điện lên các tinh thể tự nhiên được phát hiện vào năm 1880 bởi
anh em Jaques và Pierre Curie. Họ đã chứng minh rằng một số tinh thể nhất định có thể tích điện
bằng những cách khác nhau khi chịu một lực tác dụng và ngược lại.
Tuy nhiên ứng dụng của hiện tượng trên vẫn còn khó khăn. Nó chỉ bắt đầu phát triển nhanh
khi mà đạt được những thành tựu nhất định trong ngành công nghiệp gốm sứ. Vào những năm
1930, sự phát triển của tụ gốm dựa trên Bari Titanat (BaTiO3) đã dẫn đến những nền tảng quyết
định sự phát triển ứng dụng tính áp điện.
2. Hiệu ứng áp điện:
Gốm áp điện thuộc vào nhóm vật liệu sắt điện. Vật liệu sắt điện là những tinh thể phân cực
mà không cần đặt vào điện trường. Đặc tính này ổn định dưới tác dụng của nhiệt, đảo ngược
chiều phân cực dưới tác dụng của một trường điện từ, được mô tả bằng một chu trình trễ như
hình. Tính đảo ngược sự phân cực và sự tách biệt giữa ảnh hưởng cơ và điện là điểm quyết định
ứng dụng rộng rãi của gốm áp điện.
Biến dạng tăng lên khi ngoại lực tác động lên khối vật liệu áp điện sinh ra chuyển vị ở những
nút mạng dương và âm tạo ra momen lưỡng cực. Đây được gọi là hiện tượng áp điện thuận.
Hình 7. Ảnh hưởng của lực lên vật liệu có tính áp điện
6
Đặt một điện áp xoay chiều vào sẽ tạo ra sự thay đổi kích thước của vật liệu (ví dụ: giảm
hay tăng đường kính). Nếu khối vật liệu bị kẹp chặt, tức là sự biến dạng bị ngăn cản, thì sẽ sinh
ra một lực. Hiện tượng này được gọi là áp điện ngược.
Hình 8. Biến dạng của vật liệu gốm áp điện khi đặt vào hai đầu một điện áp
Hình 9. Một trường điện ngược chiều nếu nó vượt được sức kháng từ. Sự gia tăng trường mới đủ
sức phân cực lại, nhưng theo hướng ngược lại.
3. Tương tác cơ điện:
Sau đây chúng ta sẽ thiết lập mối quan hệ quan trọng giữa chất điện môi, điện cơ và áp điện,
bao gồm định nghĩa các thông số.
Phương trình điện cơ cơ bản
Các phương trình liên hệ dưới đây chỉ áp dụng đối với trường hợp tín hiệu nhỏ.
Chỉ trong trường hợp này sự phân cực có thể được mô tả bằng các phương trình tuyến tính
giữa biến dạng (S) hoặc ứng suất (T) với điện trường E hoặc chuyển vị D. Mối quan hệ tuyến
tính này được suy ra bằng cách sử dụng các hằng số điện môi, áp điện và tính đàn hồi. Bởi vì các
hằng số này phụ thuộc vào tính dị hướng của vật liệu áp điện, do đó những đại lượng vật lý này
chỉ có thể được định nghĩa bằng các ten-xơ phản ánh tính định hướng của trường điện, biến dạng
cơ học…
Ở dạng đơn giản, mối liên hệ cơ bản giữa tính chất điện và đàn hồi được mô tả bằng hai
phương trình sau:
. .
. .
T
E
D d T E
S s T d E
Trong đó:
D: chuyển vị
7
T: ứng suất
E: điện trường
S: biến dạng
d: hằng số áp điện
ε
T
hằng số điện môi (khi T hằng số)
s
E
hằng số đàn hồi (khi E hằng số)
Những hằng số áp điện liên hệ với điện trường E, ứng suất T và biến dạng S yêu cầu chỉ
số định hướng. Tương tự như sự mô tả định hướng tinh thể cho gốm áp điện, vector phân cực
thường được đặt song song với trục z hoặc trục thứ 3 của hệ tọa độ Đề cát theo quy tắc bàn tay
phải.
Những thông số định hướng được thêm các chỉ số 4, 5 và 6 tương ứng với hướng của trục
x, y và z. Ứng suất cắt theo trục x, y và z và biến dạng trượt tương ứng được thêm các chỉ số 4, 5
và 6.
Hình 10. Hệ trục vuông góc để mô tả vật liệu áp điện
4. Piezoelectric Actuators
Như đã nói ở trên, vật liệu áp điện có thể được dùng để biến đổi năng lượng điện thành năng
lượng cơ học và ngược lại. Các cơ cấu chấp hành sử dụng hiện tượng này đã trở nên phổ biến
trong suốt 20 năm qua và đã góp phần thay đổi thế giới của sự định vị chính xác.
Cơ cấu chấp hành áp điện (Piezoelectric Actuator, PEA) có các ưu điểm vượt trội so với các
phương pháp khác:
Những chuyển động micromet, nanomet ở những tần số cao có thể đạt được với PEA bởi
vì chuyển động của PEA được tạo ra bởi hiệu ứng tinh thể rắn.
PEA có thể được thiết kế để chịu được tải lớn (vài tấn) hoặc có thể chế tạo để tạo ra các
chuyển động tần số cao vài chục kHz.
PEA cần ít năng lượng để hoạt động.
PEA không cần bảo trì.
Với độ tin cậy cao, độ biến dạng 1/1000 (0.1%) có thể đạt được, ví dụ: một cơ cấu chấp hành
PEA có chiều dài 100mm có thể tạo ra chuyển vị 100 micromet.
Cơ cấu chấp hành gồm nhiều lớp xếp chồng theo chiều dọc
8
Đối với các cơ cấu chấp hành áp điện theo chiều dọc, điện trường trong lớp gốm được đặt
song song với phương phân cực. Điều này tạo ra chuyển vị theo hướng của sự phân cực. Từng
lớp riêng lẻ tạo ra chuyển vị tương đối nhỏ. Để có thể tạo ra được những chuyển vị đáp ứng được
các yêu cầu kỹ thuật thì các cơ cấu loại xếp chồng nhiều lớp được tạo ra (từng lớp riêng lẻ được
gắn nối tiếp lại với nhau và được cung cấp nguồn điện song song (xem hình 11)).
Hình 11. Ghép nối tiếp các lớp piezo.
Cơ cấu xếp chồng theo chiều dọc đạt được hiệu năng cao trong việc biến điện năng thành cơ
năng. Chúng có thể đạt được độ biến dạng 0.1 đến 0.15%. Ứng suất đạt được lên tới 30N/mm
2
do đó có thể đạt được tải tới 10000N.
Chuyển vị của Piezo Actuators loại nhiều lớp xếp chồng
Chuyển vị của gốm áp điện phụ thuộc vào điện trường E, loại vật liệu áp điện và chiều dài
của PEA. Tính chất của vật liệu có thể được đặc trưng bằng hệ số biến dạng d
ịj
. Những hệ số này
mô tả mối quan hệ giữa điện trường đặt vào PEA và biến dạng cơ học sinh ra.
Chuyển vị DL của cơ cấu một lớp lúc không tải được tính bằng công thức sau:
DL = S*L
o
~~ ±E*d
ij
*L
o
Trong đó
S là biến dạng (DL/L)
L
o
chiều dài ban đầu (m)
E là cường độ điện trường (V/m)
d
ịj
phụ thuộc đặc tính vật liệu
9
Hình 12.
Hiện tượng trễ (PEA vòng mở)
Hiện tượng trễ có thể được loại bỏ bằng PEA vòng kín. Tương tự như các thiết bị điện từ,
PEA vòng mở cũng gặp phải hiện tượng trễ.
Hiện tượng trượt (PEA vòng mở)
Hình 13. Hiện tượng trượt sau khi chuyển vị 60 µm theo thời gian.
Hiện tượng hóa già (Aging)
Hiện tượng hóa già là kết quả của quá trình khử phân cực. Hóa già là vấn đề đối với các ứng
dụng về cảm biến hay máy phát điện của vật liệu áp điện (hiện tượng áp điện thuận), nhưng đối
với ứng dụng về cơ cấu chấp hành thì hiện tượng này được bỏ qua, bởi vì quá trình khử phân cực
diễn ra mỗi khi mà một điện trường cao hơn đặt vào vật liệu.
II. Piezo Actuator
1. Bộ điều khiển của Piezo Actuator
Hình 14. Bộ Driver MDT694A của Piezo Actuator
10
1.1.Mặt trước:
Hình 15. Mặt trước của MDT694A
Mô tả:
(1) INT Knob: núm xoay để điều chỉnh điện áp ngõ ra từ 0 đến 75, 100 hoặc 150 VDC.
Nó cũng được dùng để offset cho ngõ vào (6): nó được cộng với EXT INPUT BNC.
(2) POWER Button: dùng để mở, tắt MDT694A.
(3) Voltage Limit Indicator: những đèn LED này sẽ cho người dùng biết được điện áp
giới hạn.
(4) 3 ½ Digit LED Display: hiển thị điện áp ra.
(5) High Voltage Output: kết nối tới piezo. Điện áp ra bằng tổng của điện áp offset (do
INT Knob), điện áp từ ngoài đưa vào(qua EXT INPUT) và điện áp điều khiển (qua
cổng serial).
(6) EXT INPUT BNC: đây là ngõ vào dùng để tác động từ bên ngoài lên áp ngõ ra. Điện
áp có đưa vào có thể là 0 đến 10V với hệ số là 7.5, 10 hoặc 15V/V tùy thuộc vào cài
đặt điện áp ngõ ra.
1.2.Mặt sau:
Hình 16. Mặt sau MDT694A
Mô tả:
(1) RS232 Connector: được dùng để giao tiếp với máy tính qua chuẩn giao tiếp RS232.
11
(2) Output Limit Switch: được dùng để cài đặt điện áp ra giới hạn và điều chỉnh hệ số ở
ngõ vào EXT INPUT BNC. Điện áp ra có thể giới hạn ở 75, 100 hoặc 150V. Chú ý:
không được thay đổi khi controller đang mở.
(3) Line Voltage Selector Switch: điều chỉnh điện áp cung cấp cho controller. Mặc định
từ nhà sản xuất là 115V do đó để phù hợp lưới điện 220 – 240VAC ta phải chỉnh
bằng công tắc này.
(4) Fuse Holder
(5) AC input receptacle: dùng để cắm dây dẫn điện cung cấp cho controller. Dây dẫn
pahir theo chuẩn IEC và phải có cực nối đất.
1.3.Giao tiếp giữa máy tính và MDT694A
MDT694A được thiết kế để có thể giao tiếp trực tiếp với máy tính qua cổng RS232. Điện áp
ngõ ra của MDT694A được điều khiển trực tiếp bằng phần mềm trên máy tính. Điều này giúp
loại bỏ đi sự yêu cầu của các thiết bị bổ sung như máy tạo giao động, card có đầu ra analog.
Những chức năng đơn giản như tạo ra sóng sin, điện áp ramp, xung được tạo bởi máy tính.
Cổng RS232 của MDT694A có thể đạt được baud rate lên tới 115200kbs. Có thể điều chỉnh
baud rate thông qua chuyển mạch hai hàng chân (dipswitch), với baud rate mặc định từ nhà sản
xuất là 115200kbs. Người sử dụng có thể giao tiếp với MDT694A bằng cách dùng các lệnh do
nhà sản xuất cung cấp và các chương trình mô phỏng như HyperTerminal (của National
Instruments LabView), hoặc dùng chương trình do nhà sản xuất cung cấp.
Cài đặt baud rate
Hình 17. Dip Switch và cài đặt baud rate
Trình tự tiến hành:
(1) Tắt controller và ngắt khỏi nguồn điện.
(2) Chờ khoảng 5 phút để cho các thiết bị trong controller xả hết điện
12
(3) Vặn vít để mở vỏ controller ra. Dip switch nằm ở dưới của mặt sau.
(4) Dùng bảng ở trên để cài đặt baud rate theo mong muốn.
(5) Lắp vỏ thiết bị lại như ban đầu.
Tóm tắt các lệnh được nhà sản xuất cung cấp
Lệnh XV
Đầu vào Điện áp
Mô tả Cài đặt điện áp ngõ ra chính là tham số đầu vào của lệnh
Lệnh XR?
Đầu vào ?
Mô tả Đọc và trả về điện áp ngõ ra
Lệnh XL
Đầu vào Điện áp hoặc ?
Mô tả Cài đặt điện áp ra tối thiểu. Nếu tham số là “?” sẽ trả về giá trị hiện thời của điện
áp tối thiểu.
Lệnh XH
Đầu vào Điện áp hoặc ?
Mô tả Cài đặt điện áp ra tối đa. Nếu tham số là “?” sẽ trả về giá trị hiện thời của điện áp
tối đa.
Lệnh I
Đầu vào Không có
Mô tả Trả về model sản phẩm, phần mềm firmware,…
Lệnh %
Đầu vào Không có
Mô tả Trả về điện áp tối đa được cài đặt (75V trả về 0, 100V trả về 1, 150V trả về 2)
13
III. Giao tiếp với cảm biến
1. Module giao tiếp RS-232C DL-RS1A
Hình 18. Module DL – RS1A
Module này dùng để kết nối cảm biến với các thiết bị như PC hoặc PLC thông qua chuẩn
giao tiếp RS – 232.
Các chân của module DL – RS1A
Hình 19. Kết nối module DL – RS1A với thiết bị khác
Chân số
Ký hiệu Mô tả
1 SG
Nối vào dây dẫn bọc kim của cáp giao tiếp.
Các chân SG (chân 1, 4 và 5) được nối ngắn mạch ở bên trong.
2 RD (input) Nối vào chân SD của thiết bị ngoại vi thông qua cáp giao tiếp.
3 SD (output) Nối vào chân RD của thiết bị ngoại vi thông qua cáp giao tiếp.
4 SG Các chân SG (chân 1, 4 và 5) được nối ngắn mạch ở bên trong.
5 SG Các chân SG (chân 1, 4 và 5) được nối ngắn mạch ở bên trong.
6 DRQ (input)
Khi có ngắn mạch giữa chân DRQ và SG, dữ liệu trong bộ khuếch đại cảu
sensor được truyền ra thiết bị ngoại vi kể cả khi không có yêu cầu lấy dữ
14
liệu từ thiết bị ngoại vi.
Cách nối dây
Hình 20. Cách nối dây cáp giao tiếp
Chú ý:
Chiều dài cáp không được vượt quá 15m.
Phải nối chân SG của thiết bị ngoại vị vào dây bọc kim.
Đảm bảo rằng dây bọc kim không chạm các dây tín hiệu khác hoặc là các chân khác của
module.
Các thông số giao tiếp của module DL – RS1A
Đặc tính Giá trị
Phương pháp giao tiếp Full duplex
Phương pháp đồng bộ Bất đồng bộ
Mã truyền Mã ASCII
Tốc độ truyền
2400, 4800, 9600, 19200, 38400 bit/s (mặc định nhà sản xuất:
9600 bit/s)
Data bit 7 hoặc 8 (mặc định: 7 bits)
Parity bit None, even, odd (mặc định: none)
Stop bit 1 bit
Kết thúc chuỗi truyền nhận
Nhận: tự động phát hiện CR hoặc CR + LF
Truyền: chuỗi gửi đi có kèm theo CR + LF
2. Các lệnh cơ bản
Chúng ta có thể gửi những lệnh do nhà sản xuất cung cấp dựa trên mã ASCII từ thiết bị ngoại
vi tới module DL – RS1A.
15
2.1.Lệnh đọc dữ liệu từ bộ khuếch đại của cảm biến
2.1.1. Yêu cầu:
(1) Mã của lệnh.
(2) Xác định ID của cảm biến muốn đọc.
(3) Xác định mã của dữ liệu muốn đọc hoặc ghi vào bộ khuếch đại của cảm biến.
(4) Các ký tự điều khiển để kết thúc chuỗi.
Ví dụ:
Để đọc “Detection mode (mã dữ liệu là 101)” từ một cảm biến có ID là 06 ta viết lệnh như
sau:
2.1.2. Đáp ứng:
Khi module DL – RS1A nhận thành công lệnh từ thiết bị ngoại vi, nó sẽ tự động trả về một
chuỗi dữ liệu dựa trên lệnh nhận được.
Cấu trúc:
(1) Cùng với mã đã được gửi đi từ thiết bị ngoại vi.
(2) Cùng số ID đã được gửi.
(3) Cùng mã dữ liệu đã được gửi đi.
(4) Chứa dữ liệu mà DL – RS1A nhận được từ bộ khuếch đại của cảm biến. Phần này chứa
tối đa 10 bytes dữ liệu.
(5) Chứa CR + LF là ký tự báo hiệu kết thúc chuỗi thông tin.
Ví dụ:
Khi mã yêu cầu dữ liệu là “SR,06,101CRLF” được gửi đến cảm biến thì, giả sử, dữ liệu đọc
được là “Peak hold” có mã là 2, khi đó chuỗi nhận được sẽ là:
16
2.1.3. Dữ liệu trả về nếu xảy ra lỗi:
Nếu DL – RS1A nhận được yêu cầu bị lỗi thì nó sẽ tự động trả về một chuỗi thông báo lỗi có
mã ASCII.
Cấu trúc:
(1) Mã báo hiệu chuỗi này là chuỗi thông báo lỗi.
(2) Lệnh đã gửi từ thiết bị ngoại vi.
(3) Mã xác định lỗi gì đã xảy ra.
(4) CR + LF báo hiệu kết thúc chuỗi truyền.
2.2.Lệnh ghi
Lệnh gửi đi:
Nhận về:
Lỗi:
IV. Lập trình giao diện
Phần mềm được dùng để lập trình giao diện điều khiển vòng kín cơ cấu chấp hành Piezo là
Visual C++ 2010.
Với VC++2010 chúng ta có ba cách để tạo ra một giao diện chương trình:
Dùng Windows API. Đây là giao diện cơ bản mà hệ điều hành Windows cung cấp để
giao tiếp giữa hệ điều hành và ứng dụng đang chạy dưới sự quản lý của nó.
17
Dùng Microsoft Foundation Classes, hay MFC. Đây là một tập hợp các lớp (class) của
C++ đóng gói Windows API.
Dùng Windows Forms. Đây là cơ chế phát triển ứng dụng dựa trên dạng biểu mẫu
(Form).
Ba cách này tạo thành một chuỗi theo mức độ giảm dần của công việc lập trình. Với
Windows API, chúng ta phải viết tất cả code từ đầu đến cuối – tất cả các yếu tố tạo nên giao diện
chương trình được tạo ra bằng việc viết code. Với MFC, có sự giúp đỡ trong quá trình tạo ra giao
diện, chúng ta có thể tạo ra các điều khiển (nút nhấn, text box…) bằng cách kéo thả và chúng ta
chỉ viết code đáp ứng tương tác giữa người dùng và các điều khiển; tuy nhiên, chúng ta vẫn phải
bỏ ra nhiều công sức để tạo nên một giao diện hoàn chỉnh. Với Windows Forms, chúng ta có thể
dễ dàng và nhanh chóng tạo ra một ứng dụng bởi vì lượng code cần viết giảm đi đáng kể so với
hai cách đầu tiên. Code cho Windows Form cũng có tất cả các ưu điểm của CLR.
Sử dụng MFC phải viết code nhiều hơn Windows Forms, nhưng chúng ta có thể kiểm soát
cách mà giao diện được tạo ra và kết thúc việc lập trình với một chương trình tốt hơn. Bởi vì sử
dụng Windows API để tạo ra giao diện là phương pháp thủ công nhất trong việc phát triển một
ứng dụng, do đó chúng ta sẽ không đi vào chi tiết cách lập trình này.
Thư viện Microsoft Foundation Class (MFC) là một tập hợp những lớp C++. MFC được
dùng với hệ điều hành Windows.e
1. Thư viện Microsoft Foundation Class
1.1.Giới thiệu:
Thư viện Microsoft Foundation Class (MFC) cung cấp một tập hợp các hàm, hằng số, kiểu
dữ liệu và các lớp để đơn giản quá trình tạo ra một ứng dụng chạy trên hệ điều hành Windows.
Để hiện thực chức năng của nó, MFC được tổ chức theo kiểu cây phân cấp mà lớp cơ bản nhất là
CObject. Tất cả các lớp trong bộ MFC đều được dẫn xuất từ lớp này.
1.2.Tạo chương trình bằng MFC
Chọn menu File -> New -> Project…
Hình 21.
Trong hộp thoại New Project, chọn loại project là “MFC Application”
18
Đặt tên cho project trong ô Name:, mặc định tên của project cũng là tên của solution,
nhưng ta có thể đặt tên khác cho solution.
Nhấn nút Browse… để chọn nơi mà ta sẽ lưu solution.
Hình 22.
Nhấn OK, hộp thoại MFC Application Wizard xuất hiện, sau đó chọn Next để chuyển tới
trang tiếp theo của Wizard
Hình 23.
Trong hộp thoại này có các lựa chọn cho ứng dụng của chúng ta:
- Single document: chương trình chỉ có một bộ dữ liệu được mở tại mỗi thời điểm.
- Multiple documents: chương trình có thể mở được nhiều bộ dữ liệu cùng một thời điểm.
- Dialog based: chương trình được tạo ra có dạng như một hộp thoại
- Multiple top – level documents: các dữ liệu của chương trình được hiển thị trong cửa sổ
con của màn hình thay vì cửa sổ con của ứng dụng khi ứng dụng có nhiều bộ dữ liệu
được mở cùng lúc.
Hộp thoại này mặc định chọn loại ứng dụng Multiple documents, để viết chương trình của
mình, em chọn loại ứng dụng Dialog based, và để các thông số khác mặc định. Sau đó chọn
Next.
19
Trong trang tiếp theo của Wizard,
- Thay đổi các thuộc tính của chương trình: có nút thu nhỏ, phóng to…
- Mặc định tên của giao diện chương trình là tên của project, chúng ta có thể thay đổi hoặc
giữ nguyên.
- Nhấn nút Finish để kết thúc quá trình khởi tạo một chương trình mới.
Hình 24.
1.3.Thư viện MSCOMM32.OCX
Thư viện MSCOMM32.OCX cho phép chúng ta thêm không chỉ những chức năng cơ bản
của việc truyền thông nối tiếp vào chương trình của mình mà còn có thể thêm các chức năng cao
hơn như các công cụ giao tiếp lái sự kiện (event – driven).
Đối với các phiên bản VC++ từ VC++6.0 trở về trước thì Microsoft còn dùng thư viện này,
nhưng đối với VC++2005 (v7.0) trở về sau thì thư viện này không còn được Microsoft đưa vào.
Vì vậy để sử dụng thư viện này chúng ta cần phải thực hiện:
Đối với hệ điều hành 32 bit:
Copy file MSCOMM32.OCX bỏ vào thư mục sau C:\Windows\System32
Vào biểu tượng Start của Windows gõ cmd, sau đó click chuột phải chọn Run as
administrator
Trong cửa sổ Command Promt: gõ dòng lệnh regsvr32 MSCOMM32.OCX, nhấn
Enter rồi chờ cho Windows đăng ký thư viện.
Đối với hệ điều hành 64 bit:
Copy file MSCOMM32.OCX bỏ vào thư mục sau C:\Windows\SysWOW64
Vào biểu tượng Start của Windows gõ cmd, nhấn Enter chạy Command Promt.
Trong cửa sổ Command Promt: gõ dòng lệnh cd C:\Windows\SysWOW64 để
chuyển thư mục làm việc về thư mục C:\Windows\SysWOW64
20
Gõ dòng lệnh regsvr32 MSCOMM32.OCX, nhấn Enter rồi chờ cho Windows
đăng ký thư viện.
Thêm thư viện MSCOMM32.OCX vào chương trình
Bước 1: thêm control Communication vào chương trình.
Right-click lên giao diện của chương trình -> chọn Insert ActiveX Control…Trong hộp thoại
Insert ActiveX Control, chọn Microsoft Communications Control, version 6.0 -> nhấn OK để
thêm control vào chương trình.
Hình 25. Bước 1
Bước 2: thêm lớp quản lý đối tượng Communication vừa thêm vào.
Right – click lên project ở trong Solution Explorer -> chọn Add -> Class…Hộp thoại Add Class
xuất hiện, trong hộp thoại này chọn MFC Class From ActiveX Control, sau đó click Add.
Trong hộp thoại Add Class From ActiveX Control Wizard, trong ô Available ActiveX controls
chọn Microsoft Communications Control, version 6.0<1.0> -> nhấn nút “>” -> chọn Finish để
kết thúc quá trình thêm lớp.
Bước 3: thêm biến cho communication control.
Right – click communication control ->Add Variable…Trong hộp thoại Add Member Variable
Wizard đặt tên cho biến, thay đổi tầm vực của biến.
21
Hình 26. Bước 2
Hình 27. Bước 3
1.4.Property Sheets
Property Sheets là một hộp thoại dạng tab bao gồm nhiều Property Page dùng để thay đổi
thuộc tính của các đối tượng. Người sử dụng có thể chuyển đổi giữa các Property Page bằng cách
click chuột lên page tương ứng.
Các thành phần trong Property Sheet
22
Hình 28. Một Property Sheet gồm 2 Property Pages
Property sheet gồm có 3 thành phần chính: một hộp thoại (chính là sheet), một hay nhiều
property page mà mỗi thời điểm chỉ có một page được hiển thị và tab ở đầu mỗi page để người
dùng có thể chuyển đổi qua lại giữa các pages.
Cách tạo một Modal Property Sheet:
Quy trình chung để tạo một modal property sheet bao gồm các bước sau:
Bước 1: thêm property page.
Trong Resource View, mở rộng thư mục <Project Name>.rc. Sau đó click chuột phải lên thư
mục Dialog chọn Add Resource…Trong hộp thoại add Resource click node Dialog. Tùy vào
kích thước của page ta có thể chọn IDD_PROPPAGE_LARGE, IDD_PROPPAGE_MEDIUM,
IDD_PROPPAGE_SMALL.
Hình 29. Thêm property page
Khi thêm một page mới ta phải tiến hành chỉnh sửa các thuộc tính của page trong Dialog
Properties:
Đặt Caption của page thành tên mà mình muốn xuất hiện trên tab tương ứng trong sheet.
Đặt Style thành Child.
Đặt Border thành Thin.
Chọn check box Titlebar
23
Bỏ chọn check box Diabled.
Bước 2: tạo lớp dẫn xuất từ lớp CPropertyPage. Mỗi lớp được tạo ra sẽ tương ứng với một page
mà đã tạo ra ở bước 1.
Right-Click lên Property Page cần thêm lớp -> chọn Add Class…
Hộp thoại MFC Add Class Wizard xuất hiện. Trong text box Class Name đặt tên cho lớp và
trong Combo Box Base Class chọn lớp dẫn xuất là CPropertyPage. Lớp mới được tạo ra sẽ được
lưu trong file <tên lớp>.h và <tên lớp>.cpp.
Hình 30. Thêm lớp cho Property Page
Bước 3: tạo ra biến để giữa dữ liệu cho mỗi property page. Quá trình thêm biến cho page tương
tự như đối với hộp thoại bởi vì property page là một hộp thoại có chức năng chuyên biệt hơn so
với hộp thoại thông thường.
Bước 4: khởi dựng một đối tượng của lớp CPropertySheet tại nơi mà chúng ta muốn property
sheet xuất hiện. Cụ thể nếu muốn property sheet xuất hiện khi nhấn button COM PORT
SETTING thì ta sẽ bỏ đoạn code đó vào phần than thủ tục xử lý tác vụ nhấn button COM PORT
SETTING.
Nếu tạo ra modal property sheet bằng hàm DoModal thì framework sẽ tự động cung cấp 3 nút
nhấn mặc định: OK, Cancel, và Apply. Chúng ta không cần dẫn xuất một lớp từ lớp nguồn
CPropertySheet nếu không muốn thêm các control bổ sung như của sổ xem trước.
Bước 5: để thêm page vào property sheet, cần thực hiện:
Khởi tạo đối tượng cho mỗi lớp được dẫn xuất từ lớp CPropertyPage mà chúng ta đã tạo
ra trước kia.
Gọi hàm CPropertySheet::AddPage cho mỗi page.
Đặc biệt, đối tượng của lớp CPropertySheet khi được tạo ra nó cũng đồng thời tạo ra đối
tượng của lớp CPropertyPage. Tuy nhiên, chún ta có thể hiện thực một lớp dẫn xuất từ
CPropertySheet, sau đó tích hợp các đối tượng của lớp CPropertyPage vào đối tượng
CPropertySheet và gọi hàm AddPage cho mỗi page trong constructor của lớp dẫn xuất từ lớp
CPropertySheet. Hàm AddPAge thêm đối tượng CPropertyPage vào danh sách các page của
property sheet nhưng nó thực sự không tạo cửa sổ nào cho việc hiển thị page. Vì vậy, không cần
24
thiết phải chờ cho đến khi thiết lập property sheet mới gọi hàm AddPage mà chúng ta có thể gọi
hàm này từ constructor của property sheet.
Mặc định, nếu property sheet có nhiều tab mà nó không thể hiển thị trên hết một hang thì các
tab sẽ hiển thị xếp chồng trên nhiều hàng. Để loại bỏ mặc định này, ta gọi hàm
CPropertySheet::EnableStackedTabs với tham số đầu vào là FALSE. Chúng ta phải gọi hàm này
khi tạo property sheet.
Bước 6: gọi hàm CPropertySheet::DoModal hoặc hàm Create để hiển thị property sheet. Hàm
DoModal tạo ra property sheet dưới dạng hộp thoại theo kiểu (modal dialog box). Gọi hàm
Create để tạo ra property sheet dưới dạng hộp thoại không theo kiểu (modeless dialog box).
Bước 7: trao đổi dữ liệu giữa property pages và chương trình sở hữu property sheet.
Hình 31. Mô tả bước 4, 5, 6 và 7. Hàm OnBnClickedButtonSetting() xử lý sự kiện nhấn nút
COM PORT SETTING
1.5.Đồ họa trong MFC
1.5.1. Giới thiệu GDI:
a. Ngữ cảnh thiết bị (Device Context – DC)
Ngữ cảnh thiết bị là một cấu trúc mô tả cho giao diện hiển thị của cửa sổ trên màn hình, bao
gồm trình điều khiển thiết bị của màn hình và các tham số như phông chữ, màu chữ… do vậy
mỗi cửa sổ sẽ có một DC tương ứng.
25
Hình 32. Minh họa ngữ cảnh thiết bị
Trên cửa sổ sẽ có hệ tọa độ cho việc xác định vị trí dữ liệu khi hiện ra, tọa độ này được xác
lập theo gốc ở góc trái trên cửa sổ và tăng từ trái sang phải theo chiều x, tăng từ trên xuống theo
chiều y.
Hình 33. Hệ tọa độ ngữ cảnh thiết bị DC
Các loại DC:
Display DC: sử dụng trong các thao tác vẽ lên màn hình/cửa sổ.
Printer DC: sử dụng để kết xuất dữ liệu đồ họa ra máy in.
Memory DC: tương ứng với thiết bị “logic”, thường dùng để “chuẩn bị” dữ liệu trước khi
hiển thị ra thiết bị vật lý.
Các lớp liên quan đến DC:
CDC: là lớp cơ sở dùng để quản lý DC.
CPaintDC:
Dẫn xuất từ lớp CDC,
Dùng với các thao tác vẽ trong vùng client của cửa sổ
Chỉ sử dụng trong xử lý thông điệp WM_PAINT (hàm CWnd::OnPaint)
CClientDC:
Dẫn xuất từ lớp CDC
Dùng với các thao tác vẽ trong vùng client của cửa sổ
Sử dụng bất cứ đâu, ngoại trừ bên trong hàm CWnd::OnPaint
CWindowDC:
Dẫn xuất từ lớp CDC.
Dùng với các thao tác vẽ trên cửa sổ (kể cả vùng client và non-client).