Tài liệu Hướng dẫn thực tập công nhân - Xưởng điện tử - Bài 6: Lập trình điều khiển thiết bị

Xưởng điện tử  
Bài 6: Lập trình  
BÀI 6  
LẬP TRÌNH ĐIỀU KHIỂN THIẾT BỊ  
I.MỤC ĐÍCH YÊU CẦU  
- Với ngành tự động hóa ngày càng phát triển, dùng máy tính để giám sát và  
điều khiển ngày càng phổ biến. Với sự hổ trợ của máy tính và ngôn ngữ lập trình  
ta sẽ lưu trữ, giám sát, điều khiển hệ thống tự động.  
- Yêu cầu sinh viên phải biết sử dụng Delphi và cổng nối tiếp  
II. NỘI DUNG  
Có rất nhiều ngôn ngữ lập trình được dùng trên máy tính để điều khiển và giám  
sát nhưng giới hạn trong bài thực hành này ta chỉ xét đến ngôn ngữ lập trình  
Delphi.  
Delphi là một ngôn ngữ lập trình có khả biên dịch mạnh mẽ, các ứng dụng  
Windows trực quan, giao tiếp với thiết bị bên ngoài thuận lợi.  
Trong phần thực tập này chỉ giới hạn dùng Delphi để giao tiếp thiết bị bên  
ngoài qua cổng Com.  
2.1.  
Môi trường phát triễn của Delphi.  
2.1.1. Cửa sổ chính của chương trình Delphi  
Code  
Form  
ToolBar  
Component  
Pallet  
Explorer  
Designer  
Object  
Code  
Inspector  
Editor  
Trang 22  
Thực tập công nhân  
Xưởng điện tử  
Bài 6: Lập trình  
Của sổ chương trình Delphi được xem như trung tâm điều khiển của môi  
trường soạn thảo và biên dịch ứng dụng.  
Cửa sổ chính chia làm 3 phần nhỏ: Trình đơn, thanh toolbar và bảng chứa  
các công cụ để xây dựng ứng dụng.  
Trình đơn chia ra làm nhiều mục chọn với các nhóm chức năng khác nhau  
biên dịch, chạy, gỡ lỗi ứng dụng, thiết lập cấu hình cho môi trường Delphi, soạn  
thảo mã lệnh…. Ban cũng có thể dẽ dàng tìm thấy những chức năng tương ứng  
này trên các nút nhấn của thanh toolbar.  
2.1.2. Thanh Toolbar.  
ToolBar là nơi chứa các nút nhấn tắt thay thế cho những mục chọn trên  
trình đơn như: mở/đóng tập tin dự án, chạy chương trình, gỡ lỗi ứng dụng,  
xem tài liệu trợ giúp.  
Khi bạn di chuyển chuột lên từng nút nhấn, Delphi sẽ hiển thị một thông  
điệp nhỏ gọi là ToolTip cho biết chức năng cụ thể của nút nhấn.  
2.1.3 Cửa sổ thiết kế Form (Form Designer).  
Cửa sổ thiết kế Form hay Form Desiger khởi đầu là một cửa trống, đây chính  
là cửa sổ thực tế dành cho chương trình ứng dụng của bạn.  
Những gì bạn thiết kế trực quan trên Form gần như sẽ là 95% hình ảnh của  
chương trình trong thực tế. Bạn tương tác với cửa sổ Form bằng cách chọn  
một đối tượng trên bảng công cụ, nắm – kéo và đặt những đối tượng này vào  
một vị trí thích hợp trên Form. Sau đó, bạn có thể dùng chuột hoặc bàn phím  
để chỉnh sửa, thay vị trí cho thích hợp. Ngoài ra bạn có thể thay đổi hình dáng,  
màu sắc, cách ứng xử đối tượng khi người ta dùng tác động vào chúng thông  
qua cửa sổ Object Inspector và cửa sổ soạn thảo mã lệnh Code.  
Trang 23  
Thực tập công nhân  
Xưởng điện tử  
Bài 6: Lập trình  
2.1.4. Cửa sổ Object Inspector  
Với cửa sổ Object Inspector bạn có thể bổ sungm thay đổi thuộc tính  
(properties) của các thành phần đối tượng đang có trên Form một cách trực quan.  
Chương trình cũng sẽ qui định cách ứng xử của từng đối tượng thông qua các tình  
huống (event) qui định sẵn trong cửa sổ Object Inspector.  
Thuộc tính là tập hợp dữ liệu cho biết các thông tin và thuột tính của một  
đối tượng như chiều rộng, chiều cao, màu sắc, Font chữ …. Hình ảnh đối tượng  
mà bạn nhìn thấy trên màng hình, chính là tập hợp nhiều thuột tính khác nhau của  
đối tượng tạo nên.  
Tình huống là một đoạn mã lệnh được dùng để đáp ứng một yêu cầu nào đó  
của delphi và của hệ thống. Khi người dùng kích chuột vào đối tượng , khi một  
phím được nhấn hay khi Windows cần vẽ lại một vùng nào đó trên màn hình, bạn  
cũng nhận được một tình huống riêng biệt để xử lý.  
2.1.5. Cửa sổ soạn thảo mã lệnh Code Editor.  
Cửa sổ soạn thảo mã lệnh Code Editor là nơi thật sự thể hiện nội dung của  
chương trình. Đó là nơi bạn gõ lệnh, thiết kế nội dung cho thủ tục, hàm, cài đặt các  
phương thức cho lớp…. Bạn sẽ không phải viết toàn bộ mã lệnh cho chương trình.  
Delphi tự động sản sinh khung mã định sẵn. Nhiệm vụ của lập trình viên đơn giản  
chỉ cần hiểu ý nghĩa những đoạn mã Delphi sinh ra và chèn vào đó những lệnh xử  
lý thích hợp.  
Nếu muốn, bạn vẫn có thể tự tạo lấy bộ khung bằng cách viết lệnh thủ  
công, nhưng trừ khi bạn đã nắm vững Delphi và muốn đào sâu thêm, còn không  
thì hãy để Delphi tự động thực hiện những công việc đó.  
Ví dụ: Chương trình hiển thị chuỗi ‘ Hello World’ trên một cửa sổ Windows.  
• Chọn File/New Application từ trình đơn. Delphi tạo ra cho bạn một cửa sổ  
Form đặt trong Unit.pas cùng với tập tin dự án Project1.dpr.  
• Chọn File/ Save All. Hãy đặt tên cho Unit là MainFrm.pas thay cho  
Unit1.Pas và đặt tên cho tập tin dự án là HelloWin.dpr thay cho project.dpr  
• Trên bảng công cụ Standard hãy chọn đối tượng Label  
đặt vào cửa sổ  
Form.  
• Vào cửa sổ Object Inspector, nhập thuộc tính cho đối tượng Label như sau:  
Caption  
Font  
Hello World  
Times New Roman, size 12, Bold  
Trang 24  
Thực tập công nhân  
Xưởng điện tử  
Bài 6: Lập trình  
Nhấn Ctrl + F9 để biên dịch chương trình và nhấn F9 để gọi chương trình thực thi.  
Bạn sẽ thấy chương trình hiển thị chữ Hello World in đậm. Hảy dùng chuột nắm  
kéo và di chuyển cửa sổ đến các vị trí khác nhau trên màn hình.  
Để tạo tập tin .exe bạn chọn Project/Buid all. Delphi sẽ xây dựng tập tin  
thực thi HelloWin.exe. Bạn có thể chép duy nhất một tập tin này cho chạy trên  
mọi hệ điều hành Windows 32 bit.  
2.2. Các thành phần điều khiển của Windows.  
Windows cung cấp các thành phần điều khiển giao diện đồ họa để tương tác  
với người dùng thông qua chuột và bàn phím. Bạn có thể tìm thấy đối tượng này  
trên bảng công cụ Standard của môi trường Delphi.  
2.2.1. Nút nhấn (Button)  
Mặc dù cơ chế làm việc của nút nhấn rất đơn giản, nó lại là thành phần  
khá quan trọng trong các giao diện sử dụng đồ họa.  
Nút nhấn được Delphi đặt trong lớp đối tượng có tên là TBUTTON.  
Tình huống thường sử dụng nhất của nút nhấn là OnClick. Khi người dùng  
kích chuột vào nút nhấn, tình huống này sẽ được gọi để phản ứng lại bằng  
tác vụ nào đó.  
2.2.2. Nhãn (Label)  
Nhãn là thành phần đơn giản nhất trong thư viện VCL. Đối  
tượng nhãn chỉ dùng để trình bày một chuỗi văn bản thông thường, nhằm mục  
đích mô tả thêm thông tin cho các đối tượng khác. Ta cũng có thể dùng nhãn để  
làm công cụ đưa kết quả ra màn hình dưới dạng chuỗi.  
Nhãn được Delphi đặt trong lớp đối tượng có tên là TLABEL.  
Thuộc tính thường sử dụng nhất của nhãn là:  
Thuộc tính  
Caption  
Ý nghĩa  
Thể hiện nội dung nhãn  
Đinh Font chữ, kiểu chữ cho nhãn  
Cho phép màu nền của nhãn trùng với  
màu nền của Form  
Font  
Transparent  
2.2.3. Ô đánh dấu (CheckBox)  
Ô đánh dấu được dùng rất phổ biến trong các chương trình Windows. Nó cho  
phép người dùng chọn hoặc bỏ chọn yêu cầu nào đó. Mổi lần bạn kích chuột vào ô  
CheckBox , nó cho phép thay đổi trạng thái đánh dấu.  
Ô đánh dấu Checkbox được Delphi đặt trong lớp đối tượng có tên là  
TCHECKBOX.  
Thuộc tính thường dùng nhất của Checkbox là Checked mang kiểu Boolean. Nếu  
Checked = true thì ô đánh dấu được chọn. Nếu Checked = false thì ô đánh dấu  
không chọn. Khi ô đánh dấu được kích chuột để yêu cầu thây đổi trạng thái, thì  
tình huống OnClick sẽ phát sinh.  
2.2.4. Ô văn bản (Editbox).  
Trang 25  
Thực tập công nhân  
Xưởng điện tử  
Bài 6: Lập trình  
Ô văn bản, còn gọi là Edit box. Đây là thành phần nhập liệu đơn giản. Bạn  
được phép nhập vào chuỗi văn bản, chỉnh sửa, di chuyển con nháy để soạn thảo  
bằng các phím mũi tên. Với ô văn bản, bạn chỉ được phép nhập một dòng văn bản  
duy nhất.  
Ô văn bản được Delphi đặt trong lớp đối tượng có tên là TEDIT.  
Thuột tính thường được sử dụng nhất của đối tượng ô văn bản là thuộc tính Text.  
Nó trả về một chuổi, cho biết nội dung dữ liệu mà người dùng nhập vào. Mổi khi  
dữ liệu hay nội dung của thuộc tính text bị thay đổi, tình huống Onchange sẽ được  
gọi. Bạn có thể sử dụng tình huống này để kiểm tra dữ liệu cho người dùng nhập  
vào, cập nhật lại các thông tin có liên quan đến dữ liệu.  
2.2.5. Vùng văn bản (Memo).  
Memo cho phép nhập vào cùng lúc nhiều dòng dữ liệu. Bạn có thể dùng  
chương trình Memo để tạo chương trình soạn thảo văn bản, tương đương chương  
trình Notepad.exe. Bạn có thể dùng Memo để xuất ra chuỗi văn bản.  
Vùng văn bản được Dephi đặt trong lớp đối tượng có tên TMEMO.  
Thuộc tính thường được sử dụng nhất của đối tượng Memo là Lines. Thuộc tính  
Line có kiểu Tstring, được dùng để quản lý danh sách các dòng dữ liệu mà Memo  
đang có. Bạn có thể gọi phương thức và thuộc tính phụ của Lines như sau.  
Thuộc tính  
Ý nghĩa  
Thêm vào một Memo một dòng mới  
Trả về số dòng trong Memo  
Xóa tất cả các dòng mà Memo đang  
chứa  
Lines.add  
Lines.Count  
Lines.Clear  
Lines.LoadFromFile  
Nạp các dòng văn bản vào Memo từ tập  
tin  
Lines.SaveTofile  
Lưu dữ liệu của Memo xuống tập tin  
Thuộc tính Text của Memo là một chuỗi bao gồm tất cả các dòng trong Memo  
cộng lại, mỗi dòng cách nhau bằng ký tự 10 và 13.  
Tình huống thường sử dụng nhất của Memo là OnChange. Tình huống này được  
gọi khi người dùng sửa đổi hoặc thêm nội dung vào Memo.  
Chọn File/New Application từ trình đơn đặt Form1 đối tượng Tedit, 1 đối tượng  
Tmemo, 3 đối tượng Tbutton và một đối tượng Tlabel thiết lập tình huống và  
phương thức xử lý từng đối tượng như sau:  
Đối tượng  
TFORM  
Thuột tính  
Giá trị  
Name  
Form1  
Caption  
Delphi Notepad  
FormCloseQuery  
MemoEditor  
OnCloseQuery  
Name  
TMEMO  
Lines(…)  
Onchange  
Xóa trắng  
MemoEditorChange  
Trang 26  
Thực tập công nhân  
Xưởng điện tử  
Bài 6: Lập trình  
TEDIT  
Name  
EditFileName  
Tex  
C:\My Documents\thu.tex  
Label1  
TLABEL  
TBUTTON  
Name  
Caption  
Name  
File Name  
ButtLoad  
Caption  
OnClick  
Name  
Load  
ButtLoadClick  
ButtSave  
TBUTTON  
TBUTTON  
Caption  
OnClick  
Name  
Save  
ButtSaveClick  
ButtClear  
Caption  
OnClick  
Clear  
ButtClearClick  
unit Unit1;  
interface  
uses  
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,  
StdCtrls;  
type  
TForm1 = class(TForm)  
editFileName: TEdit;  
buttLoad: TButton;  
buttSave: TButton;  
Button3: TButton;  
MemoEditor: TMemo;  
Label1: TLabel;  
procedure buttLoadClick(Sender: TObject);  
procedure buttSaveClick(Sender: TObject);  
procedure MemoEditorChange(Sender: TObject);  
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);  
procedure Button3Click(Sender: TObject);  
procedure editFileNameChange(Sender: TObject);  
private  
{ Private declarations }  
isModified:Boolean;  
public  
{ Public declarations }  
end;  
var  
Form1: TForm1;  
implementation  
{$R *.DFM}  
procedure TForm1.buttLoadClick(Sender: TObject);  
Trang 27  
Thực tập công nhân  
Xưởng điện tử  
Bài 6: Lập trình  
begin  
MemoEditor.Lines.LoadFromFile(editFileName.Text);  
isModified:=False;  
end;  
procedure TForm1.buttSaveClick(Sender: TObject);  
begin  
if isModified then  
MemoEditor.Lines.SaveToFile(editfilename.Text);  
end;  
procedure TForm1.MemoEditorChange(Sender: TObject);  
begin  
isModified:=true;  
end;  
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);  
begin  
if ismodified then  
if MessageBox(handle,'Do you want to save  
file','Warning',MB_YESNO)=ID_YES then  
ButtSaveClick(Sender);  
end;  
procedure TForm1.Button3Click(Sender: TObject);  
begin  
MemoEditor.Lines.Clear;  
end;  
procedure TForm1.editFileNameChange(Sender: TObject);  
begin  
end;  
end.  
Sau khi nhấn F9 ta có  
Trang 28  
Thực tập công nhân  
Xưởng điện tử  
Bài 6: Lập trình  
2.2.6. Trình đơn chính (MainMenu)  
Trình đơn là đối tượng đồ họa bạn thường thấy và rất hay dùng trong các  
chương trình ứng dụng. Trình đơn chính (main menu) là một dãy các lựa chọn  
nằm phía trên cửa sổ. Khi click chuột vào một lựa chọn nào đó, bạn sẽ nhận được  
danh sách các mục chọn khác sổ xuống. Chọn một mụ trên trình đơn, cũng đồng  
nghĩa với việc yêu cầu chương trình thực hiện một tác vụ nào đó.  
Đối tượng của trình đơn chính Delphi đặt tên là TMAINMENU  
Dưới đây là các bước hướng dẫn bạn cách xây dựng một thanh trình đơn  
chính cho cửa sổ Form.  
• Chọn File/ New Application, đặt lên Form đối tượng trình đơn  
TmainMenu.  
• Để xây dựng các mục chọn trình đơn, bạn hãy kích chuột vào đối tượng  
TmainMenu, hoặc chọn thuộc tính Items từ cửa sổ Object Inspector.  
Delphi sẽ hiển thị cửa sổ thiết kế trình đơn cho phép bạn nhập vào từng  
mục chọn.  
• Bạn bắt đầu nhập vào tiêu đề cho từng mục chọn bằng cách thay đổi thuộc  
tính caption trong cửa sổ Object Inspector. Delphi sẽ tự tạo ra một mục  
chọn rỗng tiếp theo để bạn có thể thêm vào mục chọn mới. Mỗi mục chọn  
được xem là một đối tượng có tên gọi là TMENUITEM.  
• Để chọn trình đơn con cho một mục chọn, bạn nhấn phím phải chuột vào  
mục chọn để Delphi hiện thị chương trình đơn tắt, tiếp theo hãy chọn  
Create Submenu để tạo trình đơn con.  
2.2.7. Đối tượng Timer  
Có lẽ, Timer là thành phần có ít thuộc tính và phương thức xử lý nhất, trong  
số những thành phần VCL do Delphi cung cấp. Tuy nhiên , Timer là thành đối  
tượng hữu dụng và rất thú vị. Timer do Delphi đặt trên bảng công cụ System.  
Timer được xem là thành phần VCL không trực quan,, bởi vì bạn không nhìn thấy  
lúc chương trình thực thi. Thay vào đó, Timer hoạt động phía sau hậu trường. Nó  
được dùng để đếm gian. Nếu có khoảng thời gian nào đó trôi qua, mã lệnh đặt  
Trang 29  
Thực tập công nhân  
Xưởng điện tử  
Bài 6: Lập trình  
trong phương thức xử lý tình huống OnTimer sẽ được gọi thực thi. Nếu Tiẻ vẫn  
còn hiệu lực thì OnTimer sẽ được thực thi đều đặn.  
Timer được Delphi dặt lớp đối tượng có tên TTIMER  
Thuộc tính thường được sử dụng nhất của Timer là  
Thuộc tính Ý nghĩa  
Interval  
Khoảng thời gian định kỳ của Timer được Windows cho phép hoạt  
động. Giá trị Interval được tính bằng 1/1000 giây. Interval =1000  
tương đương với khoảng thời gian 1 giây.  
Enabled  
TRUE: Timer ở trạng thái hoạt động. FALSE: Timer đặt ở trạng thái  
vô hiệu lực.  
Vi dụ trình hiển thị thời gian.  
procedure TForm1.FormCreate(Sender: TObject);  
begin  
caption:=TimeTostr(now());  
end;  
Kết quả.  
2.2.8. Đối tượng Comport  
Đây là thành phần Delphi dùng để giao tiếp với thiết bị bên ngoài thông qua  
cổng Com.  
Comport được Delphi dặt lớp đối tượng có tên TCOMPORT  
Tình huống thường được sử dụng của đối tượng TCOMPORT là OnAfterClose (  
đóng cổng Com), OnAfterOpen ( mở cổng Com), OnRxChar (nhận dữ liệu từ  
cổng Com).  
Ví dụ:  
Viết một chương trình xuất nhập dữ liệu thông qua cổng Com  
Chọn File/New Application từ trình đơn đặt Form1 đối tượng Tedit, 1 đối tượng  
Tmemo, 5 đối tượng Tbutton thiết lập tình huống và phương thức xử lý từng đối  
tượng như sau:  
Đối tượng  
TFORM  
Thuột tính  
Giá trị  
Name  
Form1  
Caption  
Name  
Delphi Notepad  
Memo1  
TMEMO  
TEDIT  
Lines(…)  
Name  
Xóa trắng  
Edit1  
Trang 30  
Thực tập công nhân  
Xưởng điện tử  
Bài 6: Lập trình  
Tex  
Xóa trắng  
TBUTTON  
TBUTTON  
TBUTTON  
TBUTTON  
TBUTTON  
Name  
ButtonOpen  
Open  
Caption  
Name  
ButtonSetting  
Setting  
Caption  
Name  
ButtonSend  
Send  
Caption  
Name  
ButtonClear  
Clear  
Caption  
Name  
ButtonExit  
Exit  
Caption  
TCOMPORT Name  
Comport  
ComportRxChar  
OnRxChar  
unit cong;  
interface  
uses  
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,  
StdCtrls, ExtCtrls, CPort;  
type  
TForm1 = class(TForm)  
Panel1: TPanel;  
Memo1: TMemo;  
ButtonOpen: TButton;  
Edit1: TEdit;  
ButtonSend: TButton;  
ButtonExit: TButton;  
ComPort: TComPort;  
ButtonSettings: TButton;  
ButtonClear: TButton;  
procedure ButtonExitClick(Sender: TObject);  
procedure ButtonOpenClick(Sender: TObject);  
procedure ButtonSettingsClick(Sender: TObject);  
procedure ButtonSendClick(Sender: TObject);  
procedure ComportRxChar(Sender: TObject; Count: Integer);  
procedure ButtonClearClick(Sender: TObject);  
procedure Memo1Change(Sender: TObject);  
private  
{ Private declarations }  
public  
{ Public declarations }  
end;  
var  
Form1: TForm1;  
Trang 31  
Thực tập công nhân  
Xưởng điện tử  
Bài 6: Lập trình  
implementation  
{$R *.DFM}  
// Đóng cổng Com và exit chương trình  
procedure TForm1.ButtonExitClick(Sender: TObject);  
begin  
Comport.Close;  
Close;  
end;  
// Đóng mở Cổng Com  
procedure TForm1.ButtonOpenClick(Sender: TObject);  
begin  
if ComPort.Connected then // Kiểm tra cổng Com có mở không  
begin  
Comport.Close;  
// Nếu mở thì ta đóng cổng lại và hiển thị ‘ Close’  
ButtonOpen.Caption:='Close';  
end  
else  
begin  
Comport.Open;  
ButtonOpen.Caption:='Open';  
end;  
end;  
// Đặt các tham số cho cổng Com  
procedure TForm1.ButtonSettingsClick(Sender: TObject);  
begin  
Comport.ShowSetupDialog;  
Comport.Open;  
end;  
// Gửi dữ liệu ra cổng Com  
procedure TForm1.ButtonSendClick(Sender: TObject);  
var i: byte;  
s: string;  
begin  
if edit1.Text='' then exit;  
s:=chr(strtoint(edit1.Text));  
// s:=edit1.text;  
for i:=1 to length(s) do comport.WriteStr(s[i]); //Nhận dữ liệu từ Edit1 ghi ra  
cổng Com  
end;  
// Nhận dữ liệu từ cổng com xuất ra Memo1  
procedure TForm1.ComportRxChar(Sender: TObject; Count: Integer);  
var str:string;  
begin  
Trang 32  
Thực tập công nhân  
Xưởng điện tử  
Bài 6: Lập trình  
comport.ReadStr(str,count);  
//Memo1.Text := Memo1.Text + str;  
Memo1.Text := inttostr(ord(str[1]));  
end;  
// Xóa vùng Memo1  
procedure TForm1.ButtonClearClick(Sender: TObject);  
begin  
Memo1.Lines.Clear;  
end;  
procedure TForm1.Memo1Change(Sender: TObject);  
begin  
end;  
end.  
Khi chạy chương trình ta được.  
III. PHẦN THỰC TẬP CỤ THỂ  
• Viết chương trình xuất nhập dữ liệu.  
- Giới thiệu về tổ thực tập  
- Thiết lập cổng com  
- Đóng, mở cổng  
- Gửi dữ liệu ra cổng COM  
- Nhận dữ liệu từ cổng COM và hiển thị  
*. Yêu cầu sinh viên thao tác nhanh, trang trí đẹp.  
Trang 33  
Thực tập công nhân  
pdf 12 trang myanh 23660 Free
Bạn đang xem tài liệu "Tài liệu Hướng dẫn thực tập công nhân - Xưởng điện tử - Bài 6: Lập trình điều khiển thiết bị", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

File đính kèm:

  • pdftai_lieu_huong_dan_thuc_tap_cong_nhan_xuong_dien_tu_bai_6_la.pdf