コード例 #1
0
ファイル: ControllerTypeBase.cs プロジェクト: wpmyj/twilight
        protected virtual byte[] AssemblePackageBC(Model.LinkageConfigStandard standardConfig)
        {
            byte[] sendData = new byte[24];
            sendData[0] = 0xAA;
            sendData[1] = 0x55;
            sendData[2] = 0xDA;
            sendData[3] = 0x00;                                    //异或值校验
            sendData[4] = 0x00;                                    //累加和校验
            //??
            sendData[5] = 0x12;                                    //固定值
                sendData[6] = 0xBC;                                //发送标准组态命令
            //sendData[7] = Convert.ToByte(deviceInfo.Count); //器件总数
                sendData[7] = Convert.ToByte(standardConfig.Code); //输出组编号

            //遍历所有的联动模块信息
            int intDeviceInfoIndex = 0;

            foreach (string deviceInfo in standardConfig.GetDeviceNoList)
            {
                if (deviceInfo.Length >= 7)
                {
                    byte[] byteTempValue = SplitDeviceCode(deviceInfo);
                    sendData[8 + intDeviceInfoIndex * 3] = byteTempValue[0];        //控制器号
                        sendData[9 + intDeviceInfoIndex * 3]  = byteTempValue[1];   //控制器号
                        sendData[10 + intDeviceInfoIndex * 3] = byteTempValue[2];   //回路号
                }
                else
                {
                    sendData[8 + intDeviceInfoIndex * 3] = 0x0;        //控制器号
                        sendData[9 + intDeviceInfoIndex * 3]  = 0x0;   //控制器号
                        sendData[10 + intDeviceInfoIndex * 3] = 0x0;   //回路号
                }
                intDeviceInfoIndex++;
            }
            //动作常数
            sendData[20] = Convert.ToByte(standardConfig.ActionCoefficient);//;(standardConfig.ActionCoefficient == "" || standardConfig.ActionCoefficient == null) ? "0" : standardConfig.ActionCoefficient);

            //       If liandong = "" Then liandong = "0000"
            //dsent2(34) = CInt(liandong) \ 256
            //dsent2(35) = liandong Mod 256

            //输出组1
            sendData[21] = Convert.ToByte(standardConfig.LinkageNo1);

            //输出组2
            sendData[22] = Convert.ToByte(standardConfig.LinkageNo2);

            //输出组3
            sendData[23] = Convert.ToByte(standardConfig.LinkageNo3);


            byte[] checkValue = m_ProtocolDriver.CheckValue(sendData, 6, 24);
            sendData[3] = checkValue[0];
            sendData[4] = checkValue[1];

            return(sendData);
        }
コード例 #2
0
 public bool Update(Model.LinkageConfigStandard linkageConfigStandard)
 {
     try
     {
         LinkageConfigStandard result = _controller.StandardConfig.Find(
             delegate(LinkageConfigStandard x)
         {
             return(x.ID == linkageConfigStandard.ID);
         }
             );
         if (result != null)
         {
             result.Code = linkageConfigStandard.Code;
             //result.ID = linkageConfigStandard.ID;
             result.Controller        = linkageConfigStandard.Controller;
             result.ControllerID      = linkageConfigStandard.ControllerID;
             result.ActionCoefficient = linkageConfigStandard.ActionCoefficient;
             result.DeviceNo1         = linkageConfigStandard.DeviceNo1;
             result.DeviceNo2         = linkageConfigStandard.DeviceNo2;
             result.DeviceNo3         = linkageConfigStandard.DeviceNo3;
             result.DeviceNo4         = linkageConfigStandard.DeviceNo4;
             result.DeviceNo5         = linkageConfigStandard.DeviceNo5;
             result.DeviceNo6         = linkageConfigStandard.DeviceNo6;
             result.DeviceNo7         = linkageConfigStandard.DeviceNo7;
             result.DeviceNo8         = linkageConfigStandard.DeviceNo8;
             result.DeviceNo9         = linkageConfigStandard.DeviceNo9;
             result.DeviceNo10        = linkageConfigStandard.DeviceNo10;
             result.DeviceNo11        = linkageConfigStandard.DeviceNo11;
             result.DeviceNo12        = linkageConfigStandard.DeviceNo12;
             result.OutputDevice1     = linkageConfigStandard.OutputDevice1;
             result.OutputDevice2     = linkageConfigStandard.OutputDevice2;
             result.LinkageNo1        = linkageConfigStandard.LinkageNo1;
             result.LinkageNo2        = linkageConfigStandard.LinkageNo2;
             result.LinkageNo3        = linkageConfigStandard.LinkageNo3;
             result.Memo = linkageConfigStandard.Memo;
         }
         else
         {
             _controller.StandardConfig.Add(linkageConfigStandard);
             DataRecordAlreadySet = true;
             if (linkageConfigStandard.ID > ProjectManager.GetInstance.MaxIDForStandardLinkageConfig)
             {
                 ProjectManager.GetInstance.MaxIDForStandardLinkageConfig = linkageConfigStandard.ID;
             }
             else
             {
                 ProjectManager.GetInstance.MaxIDForStandardLinkageConfig++;
             }
         }
     }
     catch
     {
         return(false);
     }
     return(true);
 }
コード例 #3
0
ファイル: ControllerType8000.cs プロジェクト: wpmyj/twilight
        /// <summary>
        /// 接收标准组态信息
        /// </summary>
        public override void ReceiveStandardLinkageInfo()
        {
            byte[] receivedData = CurrentPackage;
            IEqualityComparer <Model.LinkageConfigStandard> c = new StandardLinkageInfoCompare();

            Model.LinkageConfigStandard linkageInfo = ParsePackageCD(receivedData);
            if (!StandardLinkageConfigList.Contains(linkageInfo, c))
            {
                StandardLinkageConfigList.Add(linkageInfo);
            }
        }
コード例 #4
0
ファイル: ControllerTypeBase.cs プロジェクト: wpmyj/twilight
        /// <summary>
        /// 接收控制器上传的标准组态信息
        /// Revision: 由abstract改为virtual,除8001外其余控制器的标准组态信息都相同
        /// </summary>
        public virtual void ReceiveStandardLinkageInfo()
        {
            byte[] receivedData = CurrentPackage;
            IEqualityComparer <Model.LinkageConfigStandard> c = new StandardLinkageInfoCompare();

            Model.LinkageConfigStandard linkageInfo = ParsePackageCD(receivedData);
            if (!StandardLinkageConfigList.Contains(linkageInfo, c))
            {
                StandardLinkageConfigList.Add(linkageInfo);

                UploadedStandardLinkageConfigAccumulatedAmount++;
                UpdateProcessBarStatusForUploadedStandardLinkageConfig();
            }
        }
コード例 #5
0
ファイル: ControllerType8000.cs プロジェクト: wpmyj/twilight
        protected override byte[] AssemblePackageBC(Model.LinkageConfigStandard standardConfig)
        {
            byte[] sendData = new byte[40];
            sendData[0] = 0xAA;
            sendData[1] = 0x55;
            sendData[2] = 0xDA;
            sendData[3] = 0x00;                                //异或值校验
            sendData[4] = 0x00;                                //累加和校验
            //??
            sendData[5] = 0x22;                                //固定值
                sendData[6] = 0xBC;                            //发送标准组态命令
            //sendData[7] = Convert.ToByte(deviceInfo.Count); //器件总数
                sendData[7] = 0x00;                            //输出组编号(高位)  //!!!!
            sendData[8] = Convert.ToByte(standardConfig.Code); //输出组编号(低位)

            //遍历所有的联动模块信息
            int intDeviceInfoIndex = 0;

            foreach (string deviceInfo in standardConfig.GetDeviceNoList)
            {
                byte[] byteTempValue = SplitDeviceCode(deviceInfo);
                sendData[9 + intDeviceInfoIndex * 3] = byteTempValue[0];        //控制器号
                    sendData[10 + intDeviceInfoIndex * 3] = byteTempValue[1];   //控制器号
                    sendData[11 + intDeviceInfoIndex * 3] = byteTempValue[2];   //回路号
                    intDeviceInfoIndex++;
            }
            //动作常数
            sendData[33] = Convert.ToByte(standardConfig.ActionCoefficient);//(standardConfig.ActionCoefficient == "" || standardConfig.ActionCoefficient == null) ? "0" : standardConfig.ActionCoefficient);

            //       If liandong = "" Then liandong = "0000"
            //dsent2(34) = CInt(liandong) \ 256
            //dsent2(35) = liandong Mod 256

            //输出组1
            sendData[34] = 0x00;//高位在前
            sendData[35] = Convert.ToByte(standardConfig.LinkageNo1);
            //输出组2
            sendData[36] = 0x00;//高位在前
            sendData[37] = Convert.ToByte(standardConfig.LinkageNo2);
            //输出组3
            sendData[38] = 0x00;//高位在前
            sendData[39] = Convert.ToByte(standardConfig.LinkageNo3);


            byte[] checkValue = base.m_ProtocolDriver.CheckValue(sendData, 6, 40);
            sendData[3] = checkValue[0];
            sendData[4] = checkValue[1];

            return(sendData);
        }
コード例 #6
0
        public bool AddStandardLinkageConfigInfo(Model.LinkageConfigStandard linkageConfigStandard)
        {
            int intEffectiveRows = 0;

            try
            {
                //StringBuilder sbSQL = new StringBuilder("REPLACE INTO LinkageConfigStandard(ID,Code,DeviceNo1,DeviceNo2 , DeviceNo3 , DeviceNo4, DeviceNo5,DeviceNo6,DeviceNo7,DeviceNo8,DeviceNo9,DeviceNo10, ActionCoefficient , LinkageNo1 ,LinkageNo2 ,LinkageNo3,controllerID) ");
                //sbSQL.Append("VALUES(");
                //sbSQL.Append(linkageConfigStandard.ID + ",'");
                //sbSQL.Append(linkageConfigStandard.Code+"','");
                //sbSQL.Append(linkageConfigStandard.DeviceNo1 + "','");
                //sbSQL.Append(linkageConfigStandard.DeviceNo2 + "','");
                //sbSQL.Append(linkageConfigStandard.DeviceNo3 + "','");
                //sbSQL.Append(linkageConfigStandard.DeviceNo4 + "','");
                //sbSQL.Append(linkageConfigStandard.DeviceNo5 + "','");
                //sbSQL.Append(linkageConfigStandard.DeviceNo6 + "','");
                //sbSQL.Append(linkageConfigStandard.DeviceNo7 + "','");
                //sbSQL.Append(linkageConfigStandard.DeviceNo8 + "','");
                //sbSQL.Append(linkageConfigStandard.DeviceNo9 + "','");
                //sbSQL.Append(linkageConfigStandard.DeviceNo10 + "','");
                //sbSQL.Append(linkageConfigStandard.ActionCoefficient + "','");
                //sbSQL.Append(linkageConfigStandard.LinkageNo1 + "','");
                //sbSQL.Append(linkageConfigStandard.LinkageNo2 + "','");
                //sbSQL.Append(linkageConfigStandard.LinkageNo3 + "',");
                //sbSQL.Append(linkageConfigStandard.ControllerID + ");");
                //intEffectiveRows = _databaseService.ExecuteBySql(sbSQL);
                intEffectiveRows = _dbFileVersionService.AddStandardLinkageConfigInfo(linkageConfigStandard);
            }
            catch
            {
                intEffectiveRows = 0;
            }
            if (intEffectiveRows > 0)
            {
                return(true);
            }
            else
            {
                return(false);
            }
        }
コード例 #7
0
 public int UpdateStandardLinkageConfigInfo(Model.LinkageConfigStandard lstLinkageConfigStandard)
 {
     throw new System.NotImplementedException();
 }
コード例 #8
0
 public Model.LinkageConfigStandard GetStandardLinkageConfigInfo(Model.LinkageConfigStandard linkageConfigStandard)
 {
     throw new System.NotImplementedException();
 }