Example #1
0
        /********************************************
        *  函数名称:MonitorDatas()
        *  功能:数据监控,监控组件数据
        *  参数:monitor 表示对应的监控器组件
        *  返回值:无
        * ******************************************/
        private void MonitorDatas(Object monitor)
        {
            CheckForIllegalCrossThreadCalls = false; //去掉线程间操作无效检查
            MyMonitor mymonitor = (MyMonitor)monitor;

            while (true)
            {
                if (Form1.stop)
                {
                    this.mymonitor.EmptyingQueue();
                    return;
                }
                try
                {   //接收数据
                    mymonitor.ComponentDataReceive(mymonitor);
                    if (mymonitor.Component_reveice_queue.Count > 0)
                    {
                        Object data = mymonitor.Component_reveice_queue.Dequeue();

                        //if (data.GetType().Name == "Int32[]")
                        //{
                        //    MonitorInt32Array(data);
                        //}
                        //Console.WriteLine(data.GetType());
                        //Console.WriteLine(data.GetType().GetGenericArguments()[0].Name);

                        switch (data.GetType().Name)
                        {
                        case "BloodPressureDataType":
                            MonitorBloodPressureData(data);
                            break;

                        case "TemperatureDataType":
                            MonitorTemperatureData(data);
                            break;

                        case "HeartRateDataType":
                            MonitorHeartRateData(data);
                            break;

                        case "List`1":     //若为列表数据类型

                            //若列表元素为BloodPressureDataType
                            if (data.GetType().GetGenericArguments()[0].Name == "BloodPressureDataType")
                            {
                                MonitorListBloodPressureData(data);
                            }
                            else if (data.GetType().GetGenericArguments()[0].Name == "TemperatureDataType")
                            {
                                MonitorListTemperatureData(data);
                            }
                            else if (data.GetType().GetGenericArguments()[0].Name == "HeartRateDataType")
                            {
                                MonitorListHeartRateData(data);
                            }

                            break;


                        case "PDU_LoWPAN_IPHC":
                            Monitor_PDU_LoWPAN_IPHC(data);
                            break;

                        case "PDU_ConnID":
                            Monitor_PDU_ConnID(data);
                            break;

                        case "PDU_Network":
                            Monitor_PDU_Network(data);
                            break;

                        case "Frame_802_15_4":
                            Monitor_Frame_802_15_4(data);
                            break;

                        case "Frame_802_15_1":
                            Monitor_Frame_802_15_1(data);
                            break;

                        case "Frame_Ethernet":
                            Monitor_Frame_Ethernet(data);
                            break;
                        }
                    }

                    //Thread.Sleep(delay);
                }
                catch (Exception e) {
                    Console.WriteLine("Form monitor错误情况:" + e.Message + " " + e.StackTrace);
                }
            }
        }