자유롭게 질의 및 응답을 할 수 있는 게시판입니다. 개발자 여러분의 답변이 큰 도움이 됩니다. 
  • 제품설치/등록 오류 문의: 설치/등록 Q&A 이용 (제품 구매 고객 한정)

본 게시판 사용시 당부 사항
* 이 게시판은 자유롭게 질문을 올리고 자발적으로 답변을 공유하는 게시판입니다.
* 어느 누구도 답변을 달아야만 하는 책임은 없습니다.
* 따라서 질문을 올리실 때에는 최대한 자세하고 정중하게 질문을 올려 주세요.
* 최대한 질문을 자세히 올려야 답변도 자세히 올라 옵니다.
* 본 질문에 답변을 주시는 여러 개발자님들께 미리 감사드립니다.
-----------------------------------------------------------------------------------------------

 

 

1. 개발/실행 플랫폼 
  (1) OS : Window 7
  (2) 개발툴 : Rad Studio 10.1

2. 개발 중인 프로그램 
 
 비콘을 이용하여 일정 거리 이상 멀어지면 폰에 서로 다른 소리의 알람을 울리게 하는 어플을 제작하였습니다.

3. 질문 내용 

 위에 글 처럼 어플을 제작하였는데 하나의 비콘을 인식하면 다른 비콘을 인식을 못하네요.

 각 비콘은 스위치를 이용하여 켜고 끌수 있게 해 두었습니다.

procedure TForm1.Switch1Switch(Sender: TObject);
begin
    Beacon1.Enabled := Switch1.IsChecked;

end;

procedure TForm1.Switch2Switch(Sender: TObject);
begin
      Beacon2.Enabled := Switch2.IsChecked;
end;

procedure TForm1.Switch3Switch(Sender: TObject);
begin
         Beacon3.Enabled := Switch3.IsChecked;
end;

이런식으로 해서 비콘 3개에 스위치를 부가하였고

procedure TForm1.Beacon1BeaconEnter(const Sender: TObject;
  const ABeacon: IBeacon; const CurrentBeaconList: TBeaconList);
begin
     FBeacon := ABeacon;
end;




procedure TForm1.Beacon1BeaconExit(const Sender: TObject;
  const ABeacon: IBeacon; const CurrentBeaconList: TBeaconList);
begin
      FBeacon := nil;
end;



procedure TForm1.Beacon2BeaconEnter(const Sender: TObject;
  const ABeacon: IBeacon; const CurrentBeaconList: TBeaconList);
begin
       GBeacon :=ABeacon;
end;



procedure TForm1.Beacon2BeaconExit(const Sender: TObject;
  const ABeacon: IBeacon; const CurrentBeaconList: TBeaconList);
begin
       GBeacon := nil;
end;



procedure TForm1.Beacon3BeaconEnter(const Sender: TObject;
  const ABeacon: IBeacon; const CurrentBeaconList: TBeaconList);
begin
     HBeacon :=ABeacon;
end;

procedure TForm1.Beacon3BeaconExit(const Sender: TObject;
  const ABeacon: IBeacon; const CurrentBeaconList: TBeaconList);
begin
       HBeacon := nil;
end;

이렇게 각 비콘에 관한 이벤트를 설정해 두었습니다.

알람부분은 

procedure TForm1.Timer1Timer(Sender: TObject);
var
    InDangerArea: Boolean;
    //이탈 여부
begin
      if Assigned(FBeacon) then

begin
        InDangerArea := FBeacon.Distance  >=3;



        if not FIsWarning then
        begin
          if InDangerArea then
             Inc(FDangerAreaStaySecs)
          else
            FDangerAreaStaySecs := 0
            ;
            if FDangerAreaStaySecs >= 1 then
            //2초 이상 구역에 있을 경우
            begin
              FIsWarning := True;
              StartWarning;
              FDangerAreaStaySecs := 0
            end;
        end
         //알람 울리지 않을때
        else if FIswarning then
        begin
          if not InDangerArea then
           Inc(FDangerAreaOutSecs)
           else
           FDangerAreaOutSecs :=0
           ;

           if FDangerAreaOutSecs >= 1 then
           //2초 이상 구역에서 벗어날 경우
           begin
             FIsWarning :=False;
             StopWarning;
             FDangerAreaOutSecs := 0;
           end;
        end;
                lblDistance.Text := FBeacon.Distance.ToString;

      end;
                  //알람 울릴 때
  end;

이렇게 설정 하였고 이 코드는 Beacon1에 관한 알람 코드입니다.

Beacon2는 FBeacon부분을 GBeacon으로 바꾸고 모든 알람에 관한 변수 (FIsWarning, StopWarning,FDangerAreaOutSecs 등)도 GBeacon을 위한 새로운 변수(GIsWarning, GDangerAreaOutSecs 등)로 
따로 선언을 해 두었습니다.

실제 어플을 구동해보면 각 스위치를 켰을때는 잘 작동하였습니다. 하지만 스위치를 동시에 켜면 하나가 작동을 하면 다른것은 작동을 하지 않았습니다.

제 추측이지만 3개 비콘 모두 ABeacon이라는 동일한 Const를 가져서 그런거 같기도 하지만 정확히 몰라서 여기에 질문을 올립니다.

긴글 읽어 주셔서 감사합니다! 전체 코드도 첨부파일로 올렸습니다.

 

코드는 http://blog.hjf.pe.kr/384 이곳의 코드를 응용했습니다.

번호 제목 글쓴이 날짜 조회 수
공지 [프로그래밍 강의] 2021.6~2021.12 관리자 2015.01.22 15767
공지 유용한 관련 사이트 관리자2 2014.03.20 54582
공지 본 게시판은 개발자 여러분들의 질문과 답변을 공유하는 공간입니다. 관리자 2012.01.10 97993
2419 [시작하는 사람들을 위한 델파이 프로그래밍] 모듈 23 - Exercise 3 [2] 관리자 2016.05.27 199
2418 Tcalendar 크기 조정 [3] 엔달 2018.01.16 199
2417 10.3으로 컴파일하면 스플래쉬에서 멈추고 끝납니다. [3] file 화이부동 2018.12.19 199
2416 데이터스냅 서버 또는 RAD서버 관련 질문 드립니다. [1] 유비케어 2020.08.31 199
2415 한번에 개발하는 안드로이드 질문입니다. [2] file youngdel 2016.04.20 200
2414 [시작하는 사람들을 위한 델파이 프로그래밍] 모듈 8 - Exercise 1 [2] 관리자 2016.05.02 200
2413 파이어몽키 apk배포에 대하여 [1] 나는프로그래머! 2017.10.19 200
2412 문자열에 들어있는 &는 표현이 안되나요? [2] 토끼왕 2019.10.09 200
2411 Delphi10 에서 bpl로 제작된 컴포넌트 Install 메뉴가 안보이는 문제. (64bit 컴파일) [1] 김재욱 2016.03.04 200
2410 [공유] 실행 중 도형등의 크기를 변경하려면 어떻게 하나요? 험프리 2016.03.21 200
2409 ems start 버튼 클릭시 [FireDAC][Phys][IB]I/O error for file [1] 느림보 2021.03.15 200
2408 빌더 오늘 갑자기 이상한 곳으로 링크되고 실행하기 어려울 정도로 나타납니다. [1] file 개성산전 2018.10.12 201
2407 델파이 RIO 안드로이드 백버튼시 종료문제 [1] silkroad99 2018.11.29 201
2406 Delphi 10(10.1) MongoDB Driver => SCRAM-SHA-1 지원기능여부 문의드립니다. Terry 2016.07.14 202
» 비콘 컴포넌트를 이용한 어플에 대한 질문 드립니다. [1] file 한수 2016.12.07 202
2404 처음보는 현상 폼 크기가 작아지면서 전체적으로 작아짐 써치 2019.08.22 202
2403 firedac에서 alias사용한 쿼리를 edit하면 에러가 나네요. [1] fraha 2019.09.25 202
2402 rs-232 통신이 안됩니다. [1] 쿠리 2019.09.27 202
2401 C++builder 10.1 Berlin DLL에 vcl 테마 적용 방법 정리 [1] file gildong 2020.04.03 202
2400 [XE8 웹세미나] 유니코드관련 델파이 마이그레이션 정보를 알고 싶습니다. Humphery 2015.05.13 202