Hướng dẫn Lập trình Macro HMI Weintek: Slide to Unlock

Ngồi rảnh làm bài toán “Slide to unlock - Trượt để mở khóa màn hình cho HMI”, chia sẻ cho các bạn cách làm, từ đây các bạn có thể mở rộng nhiều ý tưởng khác nữa, có thể là Knock Code như LG, hoặc Pattern code giống Android nói chung. Cũng có thể là trượt ngang để ra Menu, nói chung là liên quan đến trượt và vuốt.:)


Yêu cầu: Hiệu ứng Slide to unlock HMI giống như trượt để mở khóa màn hình iPhone

Giải pháp: Xác định tọa độ của con trỏ lúc nhấn là nhả để xử lý dữ liệu
Tọa độ X,Y của HMI Weintek như sau:



Dùng biến nội của HMI để lấy dữ liệu tọa độ con trỏ Touch hoặc Leave (2 thuật ngữ này để tiếng Anh cho dễ hiểu). Biến lưu giá trị vị trí của con trỏ:

LW-9042: Vị trí Touch X
LW-9043: Vị trí Touch Y
LW-9044: Vị trí Leave X
LW-9045: Vị trí Leave Y

Lưu đồ thuật toán:
Lưu đồ thuật toán Slide to Unlock for HMI
Macro như sau:
?
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
macro_command main()
short Screen_ID, Touch_Pos[4], Distance, LW100, LB10_BienPhu
//GetData Position touch and leave: X,Y From LW9042->LW9045//
GetData(Touch_Pos[0], "Local HMI", LW, 9042, 4)
//Get Distance coordinates X touch and Leave
Distance=Touch_Pos[2]-Touch_Pos[0]
SetData(Distance, "Local HMI", RW, 50, 1)
//Clear Slide Bar
LW100=0
//Bien Phu De Chi Chay Macro cho trang Main
LB10_BienPhu = 1
SetData(LW100, "Local HMI", LW, 100, 1)
if Touch_Pos[1]>180 and Touch_Pos[3] < 300 then
    if Distance > 100 and Distance < 380 then
        Screen_ID=11
        SetData(LB10_BienPhu, "Local HMI", LB, 10, 1)
        SetData(Screen_ID, "Local HMI", LW, 0, 1)
    end if
end if
end macro_command
macro_command main() 
short Screen_ID, Touch_Pos[4], Distance, LW100, LB10_BienPhu
//GetData Position touch and leave: X,Y From LW9042->LW9045//
GetData(Touch_Pos[0], "Local HMI", LW, 9042, 4)
//Get Distance coordinates X touch and Leave
Distance=Touch_Pos[2]-Touch_Pos[0]
SetData(Distance, "Local HMI", RW, 50, 1)
//Clear Slide Bar
LW100=0
//Bien Phu De Chi Chay Macro cho trang Main
LB10_BienPhu = 1
SetData(LW100, "Local HMI", LW, 100, 1)
if Touch_Pos[1]>180 and Touch_Pos[3] < 300 then
    if Distance > 100 and Distance < 380 then
        Screen_ID=11
        SetData(LB10_BienPhu, "Local HMI", LB, 10, 1) 
        SetData(Screen_ID, "Local HMI", LW, 0, 1)
    end if
end if
end macro_command


Có thể dùng cách 2 là chỉ cần cái Slide Bar kia cũng làm được nhưng mình muốn giải bài toán liên quan đến trượt và vuốt.

Download Demo Project: Slide To Unlock HMI tham khảo:


Đăng nhận xét