Example #1
0
        /// <summary>
        /// 블루투스 신호 콜백 메서드
        /// </summary>
        /// <param name="ar"></param>
        private static void ServiceAsyncCallBack(IAsyncResult iasyncResult)
        {
            try
            {
                bluetoothDeviceInfo = iasyncResult.AsyncState as BluetoothDeviceInfo;

                // 안드로이드의 경우
                if (model == 0)
                {
                    try
                    {
                        ServiceRecord[] services = bluetoothDeviceInfo.EndGetServiceRecords(iasyncResult);
                        if (services.Count() > 0)
                        {
                            lockCount = 0;
                            logger.Info($"{DateTime.Now.ToString()} 통신성공");
                        }
                        else
                        {
                            logger.Info($"{DateTime.Now.ToString()} 통신실패, 카운트:{++lockCount}");

                            if (lockCount >= 3)
                            {
                                logger.Info($"{DateTime.Now.ToString()} 라이브러리 오류, 카운트:{lockCount}");
                            }
                        }
                    }
                    catch (Exception ex)
                    {
                        logger.Info($"통신실패");
                        logger.Info(ex.Message);
                        throw;
                    }
                }
                // 아이폰의 경우
                else
                {
                    try
                    {
                        ServiceRecord[] serviceRecords = bluetoothDeviceInfo.EndGetServiceRecords(iasyncResult);
                        logger.Info($"IOS {DateTime.Now.ToString()} 통신성공");
                    }
                    catch (Exception ex)
                    {
                        logger.Error(ex.Message);
                        logger.Info($"IOS {DateTime.Now.ToString()} 통신실패");
                    }
                }
            }
            catch (Exception ex)
            {
                logger.Error(ex);
            }
        }
Example #2
0
        /// <summary>
        /// 블루투스 통신 부분
        /// </summary>
        /// <param name="result"></param>
        private void Service_AsyncCallback(IAsyncResult iAsyncResult)
        {
            try
            {
                bluetoothDeviceInfo = iAsyncResult.AsyncState as BluetoothDeviceInfo;

                ServiceRecord[] services = bluetoothDeviceInfo.EndGetServiceRecords(iAsyncResult);

                if (MobileModel == EnumMobileModel.Android)
                {
                    bool isService = false;


                    if (services.Count() > 0)
                    {
                        foreach (ServiceRecord r in services)
                        {
                            int    port       = ServiceRecordHelper.GetRfcommChannelNumber(r);
                            string curSvcName = r.GetPrimaryMultiLanguageStringAttributeById(UniversalAttributeId.ServiceName);

                            Debug.WriteLine("oldServiceName ====> " + oldServiceName, " curSvcName  =>>> " + curSvcName);
                            // 알람끄기
                            if (curSvcName.CompareTo("GreenLock0") == 0)
                            {
                                frmMain._isLock           = true;
                                SoundService.isAlramUseOn = false;

                                if (oldServiceName != "" && oldServiceName.CompareTo(curSvcName) != 0)
                                {
                                    oldServiceName = curSvcName;
                                    //MessageBox.Show(GreenLock.languages.GreenLock.antiTheftoff);

                                    //GreenLock.Forms.GreenLockMessage dlg = new Forms.GreenLockMessage();
                                    //dlg.SetMessage(GreenLock.languages.GreenLock.antiTheftoff);
                                    //dlg.Show();
                                }

                                oldServiceName = curSvcName;

                                if (OnIsService != null)
                                {
                                    OnIsService(this, null);
                                }
                                break;
                            }
                            // 알람키기
                            else if (curSvcName.CompareTo("GreenLock1") == 0)
                            {
                                frmMain._isLock           = true;
                                SoundService.isAlramUseOn = false;

                                if (oldServiceName != "" && oldServiceName.CompareTo(curSvcName) != 0)
                                {
                                    oldServiceName = curSvcName;
                                    //MessageBox.Show(GreenLock.languages.GreenLock.antiTheftoff);
                                    //GreenLock.Forms.GreenLockMessage dlg = new Forms.GreenLockMessage();
                                    //dlg.SetMessage(GreenLock.languages.GreenLock.antiTheftoff);
                                    //dlg.Show();
                                }

                                oldServiceName = curSvcName;

                                if (OnNotService != null)
                                {
                                    OnNotService(this, null);
                                }
                                break;
                            }
                            else if (curSvcName.CompareTo("GreenLock2") == 0)
                            {
                                frmMain._isLock           = true;
                                SoundService.isAlramUseOn = true;
                                if (oldServiceName != "" && oldServiceName.CompareTo(curSvcName) != 0)
                                {
                                    oldServiceName = curSvcName;
                                    //GreenLock.Forms.GreenLockMessage dlg = new Forms.GreenLockMessage();
                                    //dlg.SetMessage(GreenLock.languages.GreenLock.antiThefton);
                                    //dlg.Show();
                                    //MessageBox.Show(GreenLock.languages.GreenLock.antiThefton);
                                }

                                oldServiceName = curSvcName;

                                if (OnIsService != null)
                                {
                                    OnIsService(this, null);
                                }
                                break;
                            }
                            else if (curSvcName.CompareTo("GreenLock3") == 0)
                            {
                                SoundService.isAlramUseOn = true;
                                if (oldServiceName != "" && oldServiceName.CompareTo(curSvcName) != 0)
                                {
                                    oldServiceName = curSvcName;
                                    //GreenLock.Forms.GreenLockMessage dlg = new Forms.GreenLockMessage();
                                    //dlg.SetMessage(GreenLock.languages.GreenLock.antiThefton);
                                    //dlg.Show();

                                    //MessageBox.Show(GreenLock.languages.GreenLock.antiThefton);
                                }

                                oldServiceName = curSvcName;

                                if (OnNotService != null)
                                {
                                    OnNotService(this, null);
                                }
                                break;
                            }
                        }

                        //if (isService)
                        //{

                        //    if (OnIsService != null)
                        //        OnIsService(this, null);
                        //}
                        //else
                        //{
                        //    if (OnNotService != null)
                        //        OnNotService(this, null);
                        //}
                    }
                    else
                    {
                        //서비스가 없는 경우
                        //if (OnNotService != null)
                        //    OnNotService(this, null);
                    }
                }
                else
                {
                    //if (OnNotService != null)
                    //    OnNotService(this, null);
                }
            }
            catch (Exception ea)
            {
                //통신을 못하는 경우 발생 - 모바일을 가지고 이동시
                if (OnNotService != null)
                {
                    OnNotService(this, null);
                }

                _log.write("Service_AsyncCallback =>" + ea.Message);
            }
        }
Example #3
0
        /// <summary>
        /// 블루투스 통신 부분
        /// </summary>
        /// <param name="result"></param>
        private void Service_AsyncCallback(IAsyncResult iAsyncResult)
        {
            try
            {
                bluetoothDeviceInfo = iAsyncResult.AsyncState as BluetoothDeviceInfo;

                // 안드로이드의 경우
                if (mobileModel == EnumMobileModel.Android)
                {
                    try
                    {
                        ServiceRecord[] services = bluetoothDeviceInfo.EndGetServiceRecords(iAsyncResult);

                        // 안드로이드 기기와 통신이 성공한경우 (받아온 서비스가 0 개 이상일때)
                        if (services.Count() > 0)
                        {
                            IsServiced = true;
                            LockCount  = 0;
                        }
                        // 실패한 경우 락카운트를 증가 시킨다
                        else
                        {
                            LockCount++;

                            // 락 카운트가 3 이상인 경우 서비스 통신 실패로 간주
                            if (LockCount > 3)
                            {
                                log.write("==== 락 카운트가 3 이상인 경우 서비스 통신 실패로 간주 ====");
                                IsServiced = false;
                            }
                        }
                    }
                    // 예외 발생시
                    catch (Exception ex)
                    {
                        LockCount++;


                        // 락 카운트가 3 이상인 경우 서비스 통신 실패로 간주
                        if (LockCount > 3)
                        {
                            log.write("==== 안드로이드 통신예외 ====");

                            IsServiced = false;
                        }
                    }
                }
                // IOS 의 경우
                else
                {
                    try
                    {
                        // 서비스를 가져올때 예외가 발생하지 않는다면 통신 성공으로 간주한다
                        ServiceRecord[] services = bluetoothDeviceInfo.EndGetServiceRecords(iAsyncResult);
                        IsServiced = true;
                        LockCount  = 0;
                    }
                    // 실패한 경우 락카운트를 증가 시킨다
                    catch (Exception)
                    {
                        LockCount++;
                        // 락 카운트가 1 이상인 경우 서비스 통신 실패로 간주
                        if (LockCount > 1)
                        {
                            log.write("==== IOS 락 카운트가 3 이상인 경우 서비스 통신 실패로 간주 ====");
                            IsServiced = false;
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString() + DateTime.Now.ToString());
            }
        }