Пример #1
0
        public int returnNumber()
        {
            baseclass x = new baseclass();
            baseclass y = new baseclass();

            x.number = 4;
            y        = x;
            y.number = 3;

            return(x.number);
        }
Пример #2
0
        static void Main(string[] args)
        {
            baseclass    bc   = new baseclass();
            derivedclass dc   = new derivedclass();
            baseclass    bcdc = new derivedclass();

            bc.Method1();
            bc.Method2();
            dc.Method1();
            dc.Method2();
            bcdc.Method1();
            bcdc.Method2();
            Console.ReadLine();
        }
Пример #3
0
        public static string chulirec(string rec,ref baseclass.meter[] Mets)  //处理串口接收到的数据
        {
            try
            {
                if (rec.Length < 10)
                {
                    return "error";
                }
                string message = "false";

                switch (rec.Length)         //根据数据长度分析是哪种协议        
                {
                    case 78:            //多功能电表
                        string address = rec.Substring(0, 2);       //地址
                        string data = rec.Substring(6, rec.Length - 10);
                        //            string PT = Convert.ToInt32(data.Substring(0, 4), 16).ToString();
                        //             string CT = Convert.ToInt32(data.Substring(4, 4), 16).ToString();           //电流比
                        string ALL_Power = Convert.ToInt32(data.Substring(0, 4), 16).ToString();   //功率和
                        //              double power = Convert.ToInt32(ALL_Power,16) * Convert.ToInt32(CT) / 10;       //功率
                        double Ele_data = Convert.ToInt32(data.Substring(56, 4), 16) * 65536 + Convert.ToInt32(data.Substring(60, 4), 16) + Convert.ToDouble(Convert.ToInt32(data.Substring(64, 4), 16)) / 1000;        //有功电量

                        foreach (baseclass.meter met in Mets)
                        {
                            if (met.Address == address)
                            {   
                                met.calcuTimeData(Ele_data.ToString(), "ele");
                                met.calcuData(ALL_Power, "power");
                                met.state = true;
                            }
                        }
                        message = "ok";
                        break;
                    case 88:            //多功能电表-7,8号表,测试
                        string address5 = rec.Substring(0, 2);       //地址
                        string data5 = rec.Substring(6, rec.Length - 10);
                        //            string PT = Convert.ToInt32(data.Substring(0, 4), 16).ToString();
                        //             string CT = Convert.ToInt32(data.Substring(4, 4), 16).ToString();           //电流比
                        string ALL_Power5 = Convert.ToInt32(data5.Substring(0, 4), 16).ToString();   //功率和
                        //              double power = Convert.ToInt32(ALL_Power,16) * Convert.ToInt32(CT) / 10;       //功率
                        double Ele_data5 = Convert.ToInt32(data5.Substring(56, 4), 16) * 65536 + Convert.ToInt32(data5.Substring(60, 4), 16) + Convert.ToDouble(Convert.ToInt32(data5.Substring(64, 4), 16)) / 1000;        //有功电量

                        foreach (baseclass.meter met in Mets)
                        {
                            if (met.Address == address5)
                            {
                                met.calcuTimeData(Ele_data5.ToString(), "ele");
                                met.calcuData(ALL_Power5, "power");
                                met.state = true;
                            }
                        }
                        message = "ok";
                        break;
                    case 82:        //热表
                        string address2 = rec.Substring(0, 2);
                        string data2 = rec.Substring(6, rec.Length - 10);
                        string ALL_code = (Convert.ToDouble(Convert.ToInt32(data2.Substring(0, 8), 16)) / 10).ToString();        //累计冷量
                        string ALL_hot = (Convert.ToDouble(Convert.ToInt32(data2.Substring(8, 8), 16)) / 10).ToString();         //累计热量
                        string hot_power = (Convert.ToDouble(Convert.ToInt32(data2.Substring(16, 8), 16)) / 100).ToString();       //热功率
                        string ALL_flow = (Convert.ToDouble(Convert.ToInt32(data2.Substring(24, 8), 16)) / 10).ToString(); ;        //累计流量
                        string flow = (Convert.ToDouble(Convert.ToInt32(data2.Substring(32, 8), 16)) / 100).ToString();            //瞬时流量
                        string flow_speed = (Convert.ToDouble(Convert.ToInt32(data2.Substring(40, 8), 16)) / 1000).ToString();    //流速
                        string ALL_time = Convert.ToInt32(data2.Substring(48, 8), 16).ToString();       //累计运行时间
                        string tempreter_in = (Convert.ToDouble(Convert.ToInt32(data2.Substring(56, 8), 16)) / 100).ToString();   //入口温度
                        string temperter_out = (Convert.ToDouble(Convert.ToInt32(data2.Substring(64, 8), 16)) / 100).ToString();  //出口温度

                        foreach (baseclass.meter met in Mets)
                        {
                            if (met.Address == address2)
                            {
                                met.calcuTimeData(ALL_code.ToString(), "cold");
                                met.calcuTimeData(ALL_hot.ToString(), "hot");
                                met.calcuData(hot_power, "power1");
                                met.calcuData(flow, "flow");
                                met.calcuData(ALL_flow, "allflow");
                                met.calcuData(tempreter_in, "T1");
                                met.calcuData(temperter_out, "T2");
                                met.state = true;

                            }
                        }
                        message = "ok";
                        break;

                    case 74:        //热表管道式
                        string address4 = rec.Substring(0, 2);
                        string data6 = rec.Substring(6, rec.Length - 10);
                        string ALL_code2 = (Convert.ToDouble(Convert.ToInt32(data6.Substring(0, 8), 16))).ToString();        //累计冷量
                        string ALL_hot2 = (Convert.ToDouble(Convert.ToInt32(data6.Substring(8, 8), 16)) ).ToString();         //累计热量
                        string hot_power2 = HexToFloat(data6.Substring(16, 8));       //热功率
                        string ALL_flow2 = (Convert.ToDouble(Convert.ToInt32(data6.Substring(24, 8), 16)) / 10).ToString(); ;        //累计流量
                        string flow2 = HexToFloat(data6.Substring(32, 8));            //瞬时流量
                        //        string flow_speed2 = (Convert.ToDouble(Convert.ToInt32(data6.Substring(40, 8), 16)) / 100).ToString();    //流速
                        string ALL_time2 = Convert.ToInt32(data6.Substring(40, 8), 16).ToString();       //累计运行时间
                        string tempreter_in2 = HexToFloat(data6.Substring(48, 8));   //入口温度
                        string temperter_out2 = HexToFloat(data6.Substring(56, 8));  //出口温度


                        foreach (baseclass.meter met in Mets)
                        {
                            if (met.Address == address4)
                            {
                                met.calcuTimeData(ALL_code2.ToString(), "cold");
                                met.calcuTimeData(ALL_hot2.ToString(), "hot");
                                met.calcuData(hot_power2, "power1");
                                met.calcuData(flow2, "flow");
                                met.calcuData(tempreter_in2, "T1");
                                met.calcuData(temperter_out2, "T2");
                                met.state = true;

                            }
                        }
                        message = "ok";
                        break;

                    case 36:                //645规约,未分高低位

                        string address3 = rec.Substring(2, 12);
                        string length = rec.Substring(18, 2);           //数据长度一般应该为12
                        string data3 = rec.Substring(24, 8);    //需要将length 转成10进制

                        string sts = data3;
                        string s1 = Convert.ToString(Convert.ToInt32(sts.Substring(0, 2), 16) - 51, 16);
                        string s2 = Convert.ToString(Convert.ToInt32(sts.Substring(2, 2), 16) - 51, 16);
                        string s3 = Convert.ToString(Convert.ToInt32(sts.Substring(4, 2), 16) - 51, 16);
                        string s4 = Convert.ToString(Convert.ToInt32(sts.Substring(6, 2), 16) - 51, 16);
                        if (s1.Length == 1)
                        {
                            s1 = "0" + s1;
                        }
                        string dat = s4 + s3 + s2 + "." + s1;

                        foreach (baseclass.meter met in Mets)
                        {
                            if (met.Address == address3)
                            {
                                met.calcuTimeData(dat, "ele");
                                met.state = true;

                                changyong.writedebuglog("收到数据包:" + rec, met.Address+".txt");
                                changyong.writedebuglog("数据为:" + dat, met.Address + ".txt");
                            }
                        }
                        
                        message = "ok";
                        break;


                }





                //********具体处理部分*********************

                return message;
            }
            catch (Exception ee)
            {
                return ee.Message;
            }
        }