Exemple #1
0
        private void LogUpdate(ASPacket pk)
        {
            UIUpdateDelegate updater = delegate
            {
                ICollectionView view = CollectionViewSource.GetDefaultView(logDatas);
                view.Refresh();
            };

            Dispatcher.BeginInvoke(DispatcherPriority.Normal, updater);
        }
Exemple #2
0
        /// <summary>
        /// 명령어 전송 루프 메소드
        /// </summary>
        public void SendCommandLoop()
        {
            int delay     = 1000;
            var sensorId  = 1;
            var sensorNum = 9;

            // 포트가 연결되 있는동안 무한루프
            // 1 loop당 설정된 딜레이 적용됨.
            while (comm != null && comm.isOpen())
            {
                try
                {
                    //루프가 실행 될때 마다 loopcount를 증가 시킴
                    UIUpdateDelegate updater = delegate
                    {
                        try
                        {
                            if (tbSensorID.Text.Length > 0 && tbSendCycle.Text.Length > 0)
                            {
                                sensorNum = int.Parse(tbSensorID.Text);
                                delay     = int.Parse(tbSendCycle.Text);
                            }
                        }
                        catch (Exception e)
                        {
                        }
                    };

                    Dispatcher.BeginInvoke(DispatcherPriority.Normal, updater);
                    comm.readSensor(sensorId);
                    Thread.Sleep(Math.Max(minimumreaddelay, delay));

                    if (comm.ResponseFlag)
                    {
                        // 응답이 있으면 설정된 딜레이 후 다음 센서를 읽어옴.
                        sensorId++;
                        if (sensorId > sensorNum)
                        {
                            sensorId = 1;
                        }
                        //           Thread.Sleep(delay);
                    }
                    else
                    {
                        //50ms 이후 응답이 없으면 쉬었다가 재전송
                        //             Thread.Sleep(200);
                    }
                }
                catch (Exception e)
                {
                }
            }
        }
Exemple #3
0
        public void UpdateList()
        {
            UIUpdateDelegate UpdateHandler = new UIUpdateDelegate(UpdateUI);

            this.BeginInvoke(UpdateHandler);
        }
Exemple #4
0
        /// <summary>
        /// 데이터 수신 이벤트 처리 메소드
        /// </summary>
        /// <param name="packet"></param>
        public void OnDataReceived(Object parsered, Object rawpkt, bool isCompleted)
        {
            UIUpdateDelegate updater = delegate
            {
                if (isCompleted == false)
                {
                    //재전송
                    comm.ReSend();

                    return;
                }
                if (DOutComm != null && DOutComm.isOpen())
                {
                    DOutComm.send(rawpkt as String);
                }

                var rcvPkt = parsered as string[];
                try
                {
                    var id  = rcvPkt[0];
                    var nId = int.Parse(id.Substring(1, 2));

                    ASPacket pkt = null;
                    if (id.Contains("C"))
                    {
                        pkt = new ASPacket()
                        {
                            Id = nId, TimeStamp = System.DateTime.Now.ToString("yyyy/MM/dd hh:mm:ss")
                        };
                        logDatas.Insert(0, new ASPacket()
                        {
                            Id = nId, TimeStamp = System.DateTime.Now.ToString("yyyy/MM/dd hh:mm:ss")
                        });
                    }
                    else
                    {
                        var x            = double.Parse(rcvPkt[1]);
                        var y            = double.Parse(rcvPkt[2]);
                        int wheellimitx_ = int.Parse(tbWheelAlarmX_.Text);
                        int limitx_      = int.Parse(tbSeatAlarmX_.Text);
                        int wheellimitx  = int.Parse(tbWheelAlarmX.Text);
                        int limitx       = int.Parse(tbSeatAlarmX.Text);

                        //          int ylimit = int.Parse(tbSeatAlarmY.Text);

                        if (nId == 1)
                        {
                            if (wheellimitx_ <= x && x <= wheellimitx)
                            {
                                long milliseconds = stopwatch.ElapsedMilliseconds;
                                if (milliseconds >= nextTimeout)
                                {
                                    isMusicOn = false;
                                }
                                if (isMusicOn == false)
                                {
                                    Thread t = new Thread(new ThreadStart(Danger_Music));
                                    isMusicOn   = true;
                                    nextTimeout = milliseconds + musiclength;
                                    t.Start();
                                }


                                Danger_Message(-1, 0);
                            }
                            else
                            {
                                MyMessage.IsOpen = false;
                            }
                        }
                        else
                        {
                            if (limitx_ <= x && x <= limitx)
                            {
                                long milliseconds = stopwatch.ElapsedMilliseconds;
                                if (milliseconds >= nextTimeout)
                                {
                                    isMusicOn = false;
                                }
                                if (isMusicOn == false)
                                {
                                    Thread t = new Thread(new ThreadStart(Danger_Music));
                                    isMusicOn   = true;
                                    nextTimeout = milliseconds + musiclength;
                                    t.Start();
                                }
                                Danger_Message(nId, 1);
                            }
                            else
                            {
                                MyMessage2.IsOpen = false;
                            }
                        }
                        pkt = new ASPacket()
                        {
                            TimeStamp = System.DateTime.Now.ToString("yyyy/MM/dd hh:mm:ss"), Id = nId, X = x, Y = y, Status = "DATA"
                        };
                        logDatas.Insert(0, new ASPacket()
                        {
                            TimeStamp = System.DateTime.Now.ToString("yyyy/MM/dd hh:mm:ss"), Id = nId, X = x, Y = y, Status = "DATA"
                        });

                        updateLabelContens(nId, x.ToString());


                        // 관람차 및 휠의 각도를 리스트에 저장해 놓고
                        if (nId > 0 && nId <= FERRIS + 1)
                        {
                            lastAngleList[nId - 1]   = ferrisAngleList[nId - 1];
                            ferrisAngleList[nId - 1] = x;
                        }

                        // 휠의 각도가 들어올 때 전체 각도를 적용한다.
                        if (nId == 1)
                        {
                            updateAngleAni(x);
                        }
                    }
                    if (logDatas.Count >= limit)
                    {
                        logDatas.RemoveAt(limit - 1);
                    }
                    //ICollectionView view = CollectionViewSource.GetDefaultView(logDatas);
                    //view.Refresh();
                    Thread update2 = new Thread(delegate()
                    {
                        LogUpdate(pkt);
                    });
                    update2.Start();
                }
                catch (Exception e)
                {
                }
            };

            Dispatcher.BeginInvoke(DispatcherPriority.Normal, updater);
        }
Exemple #5
0
 public void UpdateList()
 {
     UIUpdateDelegate UpdateHandler = new UIUpdateDelegate(UpdateUI);
     this.BeginInvoke(UpdateHandler);
 }