본문 바로가기
델파이 프로그래밍 정보

Tower Lamp Blink

by 알 수 없는 사용자 2017. 5. 24.
728x90
반응형



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;

728x90
반응형

'델파이 프로그래밍 정보' 카테고리의 다른 글

메모장 만들기  (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

댓글