Chương4:Giaodiệnchương trình
2.2. Chương trình:
a. Lưu đồ giải thuật:
2. Code chương trình:
//*************k
ết nối
ComPort************************
function btnConnect_Callback(hObject,
eventdata, handles)
try
global s;global hand;global comport;
global open;
if (open == 0)
Kết nối
Bắt đầu
Chọn thông số
cho COM port
S
Đ
Nhận dữ liệu: giá
trị tọa độ 0x, Oy
t
ừ VĐK gởi l
ên
Xử lý dữ liệu: cắt
chuỗi, chuyển
thành s
ố
Vẽ biên dạng 2D
của vật (tập hợp
các tọa độ x,y
nhận được).
Kết thúc
s = serial(comport);
s.BytesAvailableFcnCount = 1;
s.BytesAvailableFcnMode =
'terminator';
s.BytesAvailableFcn =
@BytesAvailable_Callback;
% s.TimeOut = 10;
fopen(s);
open = 1;
set(hand.btnConnect,'string','Disconnect');
set(hand.lblStatus,'string','Connected ');
else
set(hand.btnConnect,'string','Connect');
set(hand.lblStatus,'string','Not
Connected ');
open = 0;
fclose(s);
clear s;
end
catch
set(hand.lblStatus,'string','Connection
Error ');
msgbox('ComPort not available! Try
again!','Connection Error','error');
end
//**********chương trình nhận dữ liệu từ VĐK và vẽ biên
d
ạng*********
function BytesAvailable_Callback(obj,event)
global hand;
global t;
% axes(hand.axes1);
set(hand.lblStatus,'string','Scanning ');
string = fscanf(obj);
str = str2num(string);
if (str(1) == 2012)
j2 = str(2); %top
j1 = str(3); %bottom
i2 = str(4); %right
i1 = str(5); %left
% gioi han 2 truc x,y
xlim('manual');
ylim('manual');
if ((i2-i1)> (j2-j1))
xlim([(i1-20) (i2+20)]);
ylim([(i1-20) (i2+20)]);
else
xlim([(j1-20) (j2+20)]);
ylim([(j1-20) (j2+20)]);
end
% ve khung bien dang
% ve top
x = i1:0.05:i2;
line(x,j1,'Color','r','LineWidth',10);
% ve bottom
x = i1:0.05:i2;
line(x,j2,'Color','r','LineWidth',10);
% ve left
y = j1:0.05:j2;
line(i1,y,'Color','r','LineWidth',10);
% ve right
y = j1:0.05:j2;
line(i2,y,'Color','r','LineWidth'
,10);
else
x = str(1);
k=num2str(x);
y = str(2);
m=num2str(y);
set(hand.tbxRxx,'string',k);
set(hand.tbxTx,'string',m);
hold all;
plot(x,y,'*','LineWidth',2,
'MarkerEdgeColor','k',
'MarkerFaceColor','g',
'MarkerSize',2)
% plot(x,y);
% hold off;
end
D. Những khó khăn gặp phải trong quá trình thực hiện đề
tài:
* Phần cứng:
- Hệ Pan-Tilt còn là 1 đề tài mới mẻ, cho nên còn gặp chút
khó khăn lúc đầu trong việc thiết kế 1 hệ Pan
-Tilt.
- C
ảm biến siêu âm SRF04 có góc phát tương đối lớn, cho
nên việc quét biên dạng vật gặp khó khăn ở khâu lấy chính xác
tọa độ điểm đang quét. Chúng em đã khắc phục bớt vấn đề này
(dùng
ống nhựa gắn vào 2 đầu bộ phát - thu để giảm góc quét
xuống).
* Phần mềm:
Mới đầu nghiên cứu MatLab nên còn gặp nhiều vấn đề khó
khăn (lập tr
ình thiết kế giaodiện GUIDE, giao tiếp cổng COM
giữa VĐK với MatLab…). Tuy nhiên sau khi tìm hiểu thì đã giải
quyết được vấn đề, Đây là 1 phần mềm thực sự mạnh.
E. Hướng phát triển của đề tài:
- Vấn đề quét biên dạng còn nhiều sai xót (do góc quét rộng,
hệ Pan-Tilt chưa thực sự vững chắc). Có thể dùng 1 cảm biến
khác có góc quét nhỏ như: cảm biến laze…thì việc quét biên
d
ạng 2D của vật sẽ chính xác hơn.
- Có thể phát triển đề tài này để quét xác định hình dạng 3D
của vật.
hết
. Chương 4: Giao diện chương trình
2.2. Chương trình:
a. Lưu đồ giải thuật:
2. Code chương trình:
//*************k
ết nối.
again!','Connection Error','error');
end
//********* *chương trình nhận dữ liệu từ VĐK và vẽ biên
d
ạng*********
function BytesAvailable_Callback(obj,event)