TOWER LAMP 옵션 만들기
- 사용자가 옵션으로 체크박스에 설정을 해두면 그에 따라 Tower Lamp가 동작하는 기능
1. Panel 생성
Tower lamp 모양으로 Panel 을 3개 생성한다.
Tower Lamp 에 필요한 색상
빨 : 켜짐(clRed), 꺼짐(clMaroon)
노 : 켜짐(clYellow), 꺼짐(clOlive)
초 : 켜짐(clLime), 꺼짐(clTeal)
2. 옵션 생성
사용자가 옵션을 선택할 수 있도록 CheckBox 를 위와 같이 만든다.
3. 소스
TowerLamp 변수
- 1 : 대기상태
- 2 : 구동상태
- 3 : 알람상태
- 4 : PIO상태
전역변수 설정해준다
var
TowerLamp : integer;
0일때 TowerLamp 빨,노,초 모두 꺼준다
// Tower Lamp
tw_cnt := tw_cnt + 1;
if TowerLamp = 0 then
begin
IO_OUT_Data[OUT_Towerlamp_Red] := 0;
IO_OUT_Data[OUT_Towerlamp_Yellow] := 0;
IO_OUT_Data[OUT_Towerlamp_Green] := 0;
end;
1일때 대기상태
// IDLE
if TowerLamp = 1 then
begin
if form_Option.CheckBox_Idle_RED.Checked then
begin
if form_Option.CheckBox_Idle_Blink.Checked then
begin
if tw_cnt = 40 then
begin
IO_OUT_Data[OUT_Towerlamp_Red] := 0;
end;
if tw_cnt = 80 then
begin
IO_OUT_Data[OUT_Towerlamp_Red] := 1;
end;
if tw_cnt > 80 then
begin
tw_cnt := 0;
end;
end else
begin
IO_OUT_Data[OUT_Towerlamp_Red] := 1;
end;
end else
begin
IO_OUT_Data[OUT_Towerlamp_Red] := 0;
end;
if form_Option.CheckBox_Idle_YELLOW.Checked then
begin
if form_Option.CheckBox_Idle_Blink.Checked then
begin
if tw_cnt = 40 then
begin
IO_OUT_Data[OUT_Towerlamp_Yellow] := 0;
end;
if tw_cnt = 80 then
begin
IO_OUT_Data[OUT_Towerlamp_Yellow] := 1;
end;
if tw_cnt > 80 then
begin
tw_cnt := 0;
end;
end else
begin
IO_OUT_Data[OUT_Towerlamp_Yellow] := 1;
end;
end else
begin
IO_OUT_Data[OUT_Towerlamp_Yellow] := 0;
end;
if form_Option.CheckBox_Idle_GREEN.Checked then
begin
if form_Option.CheckBox_Idle_Blink.Checked then
begin
if tw_cnt = 40 then
begin
IO_OUT_Data[OUT_Towerlamp_Green] := 0;
end;
if tw_cnt = 80 then
begin
IO_OUT_Data[OUT_Towerlamp_Green] := 1;
end;
if tw_cnt > 80 then
begin
tw_cnt := 0;
end;
end else
begin
IO_OUT_Data[OUT_Towerlamp_Green] := 1;
end;
end else
begin
IO_OUT_Data[OUT_Towerlamp_Green] := 0;
end;
end;
2일때
// RUN
if TowerLamp = 2 then
begin
if form_Option.CheckBox_Run_RED.Checked then
begin
if form_Option.CheckBox_Run_Blink.Checked then
begin
if tw_cnt = 40 then
begin
IO_OUT_Data[OUT_Towerlamp_Red] := 0;
end;
if tw_cnt = 80 then
begin
IO_OUT_Data[OUT_Towerlamp_Red] := 1;
end;
if tw_cnt > 80 then
begin
tw_cnt := 0;
end;
end else
begin
IO_OUT_Data[OUT_Towerlamp_Red] := 1;
end;
end else
begin
IO_OUT_Data[OUT_Towerlamp_Red] := 0;
end;
if form_Option.CheckBox_Run_YELLOW.Checked then
begin
if form_Option.CheckBox_Run_Blink.Checked then
begin
if tw_cnt = 40 then
begin
IO_OUT_Data[OUT_Towerlamp_Yellow] := 0;
end;
if tw_cnt = 80 then
begin
IO_OUT_Data[OUT_Towerlamp_Yellow] := 1;
end;
if tw_cnt > 80 then
begin
tw_cnt := 0;
end;
end else
begin
IO_OUT_Data[OUT_Towerlamp_Yellow] := 1;
end;
end else
begin
IO_OUT_Data[OUT_Towerlamp_Yellow] := 0;
end;
if form_Option.CheckBox_Run_GREEN.Checked then
begin
if form_Option.CheckBox_Run_Blink.Checked then
begin
if tw_cnt = 40 then
begin
IO_OUT_Data[OUT_Towerlamp_Green] := 0;
end;
if tw_cnt = 80 then
begin
IO_OUT_Data[OUT_Towerlamp_Green] := 1;
end;
if tw_cnt > 80 then
begin
tw_cnt := 0;
end;
end else
begin
IO_OUT_Data[OUT_Towerlamp_Green] := 1;
end;
end else
begin
IO_OUT_Data[OUT_Towerlamp_Green] := 0;
end;
end;
3일때
// ALARM
if TowerLamp = 3 then
begin
if form_Option.CheckBox_Alarm_RED.Checked then
begin
if form_Option.CheckBox_Alarm_Blink.Checked then
begin
if tw_cnt = 40 then
begin
IO_OUT_Data[OUT_Towerlamp_Red] := 0;
end;
if tw_cnt = 80 then
begin
IO_OUT_Data[OUT_Towerlamp_Red] := 1;
end;
if tw_cnt > 80 then
begin
tw_cnt := 0;
end;
end else
begin
IO_OUT_Data[OUT_Towerlamp_Red] := 1;
end;
end else
begin
IO_OUT_Data[OUT_Towerlamp_Red] := 0;
end;
if form_Option.CheckBox_Alarm_YELLOW.Checked then
begin
if form_Option.CheckBox_Alarm_Blink.Checked then
begin
if tw_cnt = 40 then
begin
IO_OUT_Data[OUT_Towerlamp_Yellow] := 0;
end;
if tw_cnt = 80 then
begin
IO_OUT_Data[OUT_Towerlamp_Yellow] := 1;
end;
if tw_cnt > 80 then
begin
tw_cnt := 0;
end;
end else
begin
IO_OUT_Data[OUT_Towerlamp_Yellow] := 1;
end;
end else
begin
IO_OUT_Data[OUT_Towerlamp_Yellow] := 0;
end;
if form_Option.CheckBox_Alarm_GREEN.Checked then
begin
if form_Option.CheckBox_Alarm_Blink.Checked then
begin
if tw_cnt = 40 then
begin
IO_OUT_Data[OUT_Towerlamp_Green] := 0;
end;
if tw_cnt = 80 then
begin
IO_OUT_Data[OUT_Towerlamp_Green] := 1;
end;
if tw_cnt > 80 then
begin
tw_cnt := 0;
end;
end else
begin
IO_OUT_Data[OUT_Towerlamp_Green] := 1;
end;
end else
begin
IO_OUT_Data[OUT_Towerlamp_Green] := 0;
end;
end;
4일때
// PIO
if TowerLamp = 4 then
begin
if form_Option.CheckBox_PIO_RED.Checked then
begin
if form_Option.CheckBox_PIO_Blink.Checked then
begin
if tw_cnt = 40 then
begin
IO_OUT_Data[OUT_Towerlamp_Red] := 0;
end;
if tw_cnt = 80 then
begin
IO_OUT_Data[OUT_Towerlamp_Red] := 1;
end;
if tw_cnt > 80 then
begin
tw_cnt := 0;
end;
end else
begin
IO_OUT_Data[OUT_Towerlamp_Red] := 1;
end;
end else
begin
IO_OUT_Data[OUT_Towerlamp_Red] := 0;
end;
if form_Option.CheckBox_PIO_YELLOW.Checked then
begin
if form_Option.CheckBox_PIO_Blink.Checked then
begin
if tw_cnt = 40 then
begin
IO_OUT_Data[OUT_Towerlamp_Yellow] := 0;
end;
if tw_cnt = 80 then
begin
IO_OUT_Data[OUT_Towerlamp_Yellow] := 1;
end;
if tw_cnt > 80 then
begin
tw_cnt := 0;
end;
end else
begin
IO_OUT_Data[OUT_Towerlamp_Yellow] := 1;
end;
end else
begin
IO_OUT_Data[OUT_Towerlamp_Yellow] := 0;
end;
if form_Option.CheckBox_PIO_GREEN.Checked then
begin
if form_Option.CheckBox_PIO_Blink.Checked then
begin
if tw_cnt = 40 then
begin
IO_OUT_Data[OUT_Towerlamp_Green] := 0;
end;
if tw_cnt = 80 then
begin
IO_OUT_Data[OUT_Towerlamp_Green] := 1;
end;
if tw_cnt > 80 then
begin
tw_cnt := 0;
end;
end else
begin
IO_OUT_Data[OUT_Towerlamp_Green] := 1;
end;
end else
begin
IO_OUT_Data[OUT_Towerlamp_Green] := 0;
end;
end;
'델파이 프로그래밍 정보' 카테고리의 다른 글
메모장 만들기 (0) | 2017.05.25 |
---|---|
Delphi 유용한 사이트 (0) | 2017.05.24 |
CCLINK 세팅 방법 (0) | 2017.05.18 |
PC 상세 내용 (0) | 2017.05.10 |
0~9999 숫자 중 3이 포함된 숫자를 구하기 (0) | 2017.05.09 |
댓글