浏览代码

Merge branch 'master' of http://afc.siasun.com/gitlab/siasun.autopilot/siasun.autopilot

madesheng 4 年之前
父节点
当前提交
7e7ca0069a

+ 143 - 1
SIASUN.Autopilot.BLL/Controler/BlControler.cs

@@ -1,4 +1,5 @@
 using ProjectBase.Data.Logs;
+using ProjectBase.Data.Redis;
 using SIASUN.Autopilot.Device.Common;
 using SIASUN.Autopilot.Device.Message;
 using System;
@@ -14,9 +15,18 @@ namespace SIASUN.Autopilot.BLL.Controler
     {
         // 控制器命令值
         private string power = "1";
+
+        /// <summary>
+        /// 定时器
+        /// </summary>
+        private static MTimer mTime;
+
+        private RedisHelper redis = new RedisHelper(0);
+
         /// <summary>
-        /// 控制上电命令 ICU-》RCU
+        /// 控制上电命令 ICU-》RCU 
         /// </summary>
+        /// <param name="power">0=Power Off;1=Power ON;2=无效命令</param>
         /// <returns></returns>
         public int RCUPowerOnRequest(PowerStatus power)
         {
@@ -35,8 +45,140 @@ namespace SIASUN.Autopilot.BLL.Controler
             SimpleCommand<控制器上电命令> cmd = new SimpleCommand<控制器上电命令>();
             int r = cmd.Execute(sMsg, sMsg.GetId);
             LogHelper.log.Info(string.Format("发送控制器上电命令,返回值{0}", r));
+            if (r > 0)
+            {
+                mTime = new MTimer(100, 500, 1, CirculateSend);
+                mTime.Open();
+            }
+            return r;
+        }
+
+        /// <summary>
+        /// 执行机构使能请求
+        /// </summary>
+        /// <param name="common">0=Disable;1=Enable</param>
+        /// <param name="throttleClutch">油门离合器控制:0=Joint;1=Release;2=无效命令</param>
+        /// <param name="actuallySysControl">实际系统控制模式请求:0=自动学习模式;1=手动学习模式;3=人工驾驶模式;4=机器人自检模式;5=机器人调试模式</param>
+        /// <returns></returns>
+        public int RCUEnableRequest()
+        {
+            LogHelper.log.Info("发送RCU使能命令请求");
+            执行机构使能请求 sMsg = new 执行机构使能请求()
+            {
+                实际系统控制模式请求 = redis.GetString("实际系统控制模式请求"),
+                机器人Estop使能 = redis.GetString("机器人Estop使能"),
+                制动急停气泵使能 = redis.GetString("制动急停气泵使能"),
+                系统软急停使能 = redis.GetString("系统软急停使能"),
+                换挡臂Y电机使能 = redis.GetString("换挡臂Y电机使能"),
+                离合电机使能 = redis.GetString("离合电机使能"),
+                油门离合器控制 = redis.GetString("油门离合器控制"),
+                油门电机使能 = redis.GetString("油门电机使能"),
+                制动电机使能 = redis.GetString("制动电机使能"),
+                转向电机使能 = redis.GetString("转向电机使能"),
+                换挡臂X电机使能 = redis.GetString("换挡臂X电机使能")
+
+            };
+            SimpleCommand<执行机构使能请求> cmd = new SimpleCommand<执行机构使能请求>();
+            int r = cmd.Execute(sMsg, sMsg.GetId);
+            LogHelper.log.Info(string.Format("发送执行机构使能请求,返回值{0}", r));
+            return r;
+        }
+
+        /// <summary>
+        /// 循环发送命令
+        /// </summary>
+        private static void CirculateSend(object sender, long JumpPeriod, long interval)
+        {
+
+        }
+
+        /// <summary>
+        /// 学习模式请求确认
+        /// </summary>
+        /// <param name="sMg"></param>
+        /// <returns></returns>
+        public int RCULearnModeRequest()
+        {
+            LogHelper.log.Info("发送RCU学习模式请求确认命令");
+            学习模式请求确认 sMg = new 学习模式请求确认()
+            {
+                档位自动学习完成确认 = redis.GetString("档位自动学习完成确认"),
+                清空挡位学习表 = redis.GetString("清空挡位学习表"),
+                终止自动学习 = redis.GetString("终止自动学习"),
+                清空油门学习表 = redis.GetString("清空油门学习表"),
+                清空制动学习表 = redis.GetString("清空制动学习表"),
+                清空离合学习表 = redis.GetString("清空离合学习表"),
+                清空转向学习表 = redis.GetString("清空转向学习表"),
+                挡位位置学习请求确认 = redis.GetString("挡位位置学习请求确认"),
+                位置学习请求确认 = redis.GetString("位置学习请求确认"),
+                系统学习请求 = redis.GetString("系统学习请求")
+            };
+            SimpleCommand<学习模式请求确认> cmd = new SimpleCommand<学习模式请求确认>();
+            int r = cmd.Execute(sMg,sMg.GetId);
+            LogHelper.log.Info(string.Format("发送学习模式请求确认命令,返回值{0}", r));
             return r;
         }
 
+        /// <summary>
+        /// 踏板执行机构控制命令
+        /// </summary>
+        /// <returns></returns>
+        public int PedalControlCommand()
+        {
+            LogHelper.log.Info("发送踏板执行机构控制命令");
+            踏板执行机构控制命令 sMg = new 踏板执行机构控制命令()
+            {
+                制动踏板力控制请求 = redis.GetString("制动踏板力控制请求"),
+                制动踏板速度控制请求 = redis.GetString("制动踏板速度控制请求"),
+                制动踏板控制模式请求 = redis.GetString("制动踏板控制模式请求"),
+                制动踏板位置控制请求 = redis.GetString("制动踏板位置控制请求"),
+                油门踏板速度控制请求 = redis.GetString("油门踏板速度控制请求"),
+                油门踏板位置控制请求 = redis.GetString("油门踏板位置控制请求")
+            };
+            SimpleCommand<踏板执行机构控制命令> cmd = new SimpleCommand<踏板执行机构控制命令>();
+            int r = cmd.Execute(sMg, sMg.GetId);
+            LogHelper.log.Info(string.Format("发送踏板执行机构控制命令,返回值{0}", r));
+            return r;
+        }
+
+        /// <summary>
+        /// 转向执行机构控制命令
+        /// </summary>
+        /// <returns></returns>
+        public int TurnControlCommand()
+        {
+            LogHelper.log.Info("发送转向执行机构控制命令");
+            转向执行机构控制命令 sMg = new 转向执行机构控制命令()
+            {
+                方向盘转矩控制请求 = redis.GetString("方向盘转矩控制请求"),
+                方向盘转速控制请求 = redis.GetString("方向盘转速控制请求"),
+                方向盘控制模式请求 = redis.GetString("方向盘控制模式请求"),
+                方向盘转角控制请求 = redis.GetString("方向盘转角控制请求")
+            };
+            SimpleCommand<转向执行机构控制命令> cmd = new SimpleCommand<转向执行机构控制命令>();
+            int r = cmd.Execute(sMg, sMg.GetId);
+            LogHelper.log.Info(string.Format("发送转向执行机构控制命令,返回值{0}", r));
+            return r;
+        }
+
+        /// <summary>
+        /// 挡位执行机构控制命令
+        /// </summary>
+        /// <returns></returns>
+        public int GearControlCommand()
+        {
+            LogHelper.log.Info("发送挡位执行机构控制命令");
+            挡位执行机构控制命令 sMg = new 挡位执行机构控制命令()
+            {
+                离合踏板速度控制请求 = redis.GetString("离合踏板速度控制请求"),
+                离合踏板位置控制请求 = redis.GetString("离合踏板位置控制请求"),
+                换挡模式请求 = redis.GetString("换挡模式请求"),
+                挡位控制请求 = redis.GetString("挡位控制请求")
+            };
+            SimpleCommand<挡位执行机构控制命令> cmd = new SimpleCommand<挡位执行机构控制命令>();
+            int r = cmd.Execute(sMg, sMg.GetId);
+            LogHelper.log.Info(string.Format("发送挡位执行机构控制命令,返回值{0}", r));
+            return r;
+        }
     }
 }

+ 194 - 0
SIASUN.Autopilot.Device/Common/MTimer.cs

@@ -0,0 +1,194 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Runtime.InteropServices;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace SIASUN.Autopilot.Device.Common
+{
+    /// <summary>
+    /// 基于系统性能计数器的定时器,计数单位是1微秒=1/1000毫秒
+    /// 注意:该定时器会独占一个CPU核心,尝试定时器与主程序运行在同一核心将导致程序失去响应
+    /// </summary>
+    public class MTimer
+    {
+        /// <summary>
+        /// 获取当前系统性能计数
+        /// </summary>
+        /// <param name="lpPerformanceCount"></param>
+        /// <returns></returns>
+        [DllImport("Kernel32.dll")]
+        private static extern bool QueryPerformanceCounter(out long lpPerformanceCount);
+        /// <summary>
+        /// 获取当前系统性能频率
+        /// </summary>
+        /// <param name="lpFrequency"></param>
+        /// <returns></returns>
+        [DllImport("Kernel32.dll")]
+        private static extern bool QueryPerformanceFrequency(out long lpFrequency);
+        /// <summary>
+        /// 指定某一特定线程运行在指定的CPU核心
+        /// </summary>
+        /// <param name="hThread"></param>
+        /// <param name="dwThreadAffinityMask"></param>
+        /// <returns></returns>
+        [DllImport("kernel32.dll")]
+        static extern UIntPtr SetThreadAffinityMask(IntPtr hThread, UIntPtr dwThreadAffinityMask);
+        /// <summary>
+        /// 获取当前线程的Handler
+        /// </summary>
+        /// <returns></returns>
+        [DllImport("kernel32.dll")]
+        static extern IntPtr GetCurrentThread();
+        /// <summary>
+        /// 是否销毁定时器
+        /// </summary>
+        private bool _Dispose = false;
+        /// <summary>
+        /// 是否正在运行定时器
+        /// </summary>
+        private bool _BRunTimer = false;
+        /// <summary>
+        /// 首次启动延时(微秒)
+        /// </summary>
+        private uint _Delay = 0;
+        /// <summary>
+        /// 定时器周期(微秒)
+        /// </summary>
+        private long _Period = 10;
+        /// <summary>
+        /// 定时器运行时独占的CPU核心索引序号
+        /// </summary>
+        private byte _CpuIndex = 0;
+        /// <summary>
+        /// 系统性能计数频率(每秒)
+        /// </summary>
+        private long _Freq = 0;
+        /// <summary>
+        /// 系统性能计数频率(每微秒)
+        /// </summary>
+        private long _Freqmms = 0;
+        /// <summary>
+        /// 回调函数定义
+        /// </summary>
+        private OnTickHandle Tick;
+        /// <summary>
+        /// 根据CPU的索引序号获取CPU的标识序号
+        /// </summary>
+        /// <param name="idx"></param>
+        /// <returns></returns>
+        private ulong GetCpuID(int idx)
+        {
+            ulong cpuid = 0;
+            if (idx < 0 || idx >= System.Environment.ProcessorCount)
+            {
+                idx = 0;
+            }
+            cpuid |= 1UL << idx;
+            return cpuid;
+        }
+        /// <summary>
+        /// 定时器构造函数
+        /// </summary>
+        /// <param name="delay">首次启动定时器延时时间(微秒)</param>
+        /// <param name="period">定时器触发的周期(微秒)</param>
+        /// <param name="cpuIndex">指定定时器线程独占的CPU核心索引,必须>0,不允许为定时器分配0#CPU</param>
+        /// <param name="tick">定时器触发时的回调函数</param>
+        public MTimer(uint delay, uint period, byte cpuIndex, OnTickHandle tick)
+        {
+            Tick = tick;
+            _Delay = delay;
+            _Period = period;
+            _CpuIndex = cpuIndex;
+            long freq = 0;
+            QueryPerformanceFrequency(out freq);
+            if (freq > 0)
+            {
+                _Freq = freq;
+                _Freqmms = freq / 1000000;//每微秒性能计数器跳跃次数
+            }
+            else
+            {
+                throw new Exception("初始化定时器失败");
+            }
+            if (_CpuIndex == 0)
+            {
+                throw new Exception("定时器不允许被分配到0#CPU");
+            }
+            if (_CpuIndex >= System.Environment.ProcessorCount)
+            {
+                throw new Exception("为定时器分配了超出索引的CPU");
+            }
+        }
+        private System.Threading.Thread _threadRumTimer;
+        /// <summary>
+        /// 开启定时器
+        /// </summary>
+        public void Open()
+        {
+            if (Tick != null)
+            {
+                _threadRumTimer = new System.Threading.Thread(new System.Threading.ThreadStart(RunTimer));
+                _threadRumTimer.Start();
+            }
+        }
+        /// <summary>
+        /// 运行定时器
+        /// </summary>
+        private void RunTimer()
+        {
+            UIntPtr up = UIntPtr.Zero;
+            if (_CpuIndex != 0)
+                up = SetThreadAffinityMask(GetCurrentThread(), new UIntPtr(GetCpuID(_CpuIndex)));
+            if (up == UIntPtr.Zero)
+            {
+                throw new Exception("为定时器分配CPU核心时失败");
+            }
+            long q1, q2;
+            QueryPerformanceCounter(out q1);
+            QueryPerformanceCounter(out q2);
+            if (_Delay > 0)
+            {
+                while (q2 < q1 + _Delay * _Freqmms)
+                {
+                    QueryPerformanceCounter(out q2);
+                }
+            }
+            QueryPerformanceCounter(out q1);
+            QueryPerformanceCounter(out q2);
+            while (!_Dispose)
+            {
+                _BRunTimer = true;
+                QueryPerformanceCounter(out q2);
+                if (q2 > q1 + _Freqmms * _Period)
+                {
+                    //***********回调***********//
+                    if (!_Dispose)
+                        Tick(this, (q2 - q1) / (_Freqmms * _Period), (q2 - q1) / _Freqmms);
+                    q1 = q2;
+                    //System.Windows.Forms.Application.DoEvents();//会导致线程等待windows消息循环,时间损失15ms以上
+                }
+                _BRunTimer = false;
+            }
+        }
+        /// <summary>
+        /// 销毁当前定时器所占用的资源
+        /// </summary>
+        public void Dispose()
+        {
+            _Dispose = true;
+            while (_BRunTimer)
+                System.Windows.Forms.Application.DoEvents();//在工作未完成之前,允许处理消息队列,防止调用者挂起
+            if (_threadRumTimer != null)
+                _threadRumTimer.Abort();
+        }
+        /// <summary>
+        /// 定时器事件的委托定义
+        /// </summary>
+        /// <param name="sender">事件的发起者,即定时器对象</param>
+        /// <param name="JumpPeriod">上次调用和本次调用跳跃的周期数</param>
+        /// <param name="interval">上次调用和本次调用之间的间隔时间(微秒)</param>
+        public delegate void OnTickHandle(object sender, long JumpPeriod, long interval);
+    }
+}

+ 6 - 0
SIASUN.Autopilot.Device/Message/学习模式请求确认.cs

@@ -13,6 +13,12 @@ namespace SIASUN.Autopilot.Device.Message
         public 学习模式请求确认()
         {
         }
+
+        public string GetId
+        {
+            get { return OperationCode; }
+        }
+
         /// <summary>
         /// 档位自动学习完成确认
         /// </summary>

+ 5 - 0
SIASUN.Autopilot.Device/Message/执行机构使能请求.cs

@@ -14,6 +14,11 @@ namespace SIASUN.Autopilot.Device.Message
         {
         }
 
+        public string GetId
+        {
+            get { return OperationCode; }
+        }
+
         /// <summary>
         /// 实际系统控制模式请求
         /// </summary>

+ 5 - 0
SIASUN.Autopilot.Device/Message/挡位执行机构控制命令.cs

@@ -10,6 +10,11 @@ namespace SIASUN.Autopilot.Device.Message
     {
         public const string OperationCode = "5f6";
 
+        public string GetId
+        {
+            get { return OperationCode; }
+        }
+
         public 挡位执行机构控制命令()
         {
         }

+ 5 - 0
SIASUN.Autopilot.Device/Message/踏板执行机构控制命令.cs

@@ -14,6 +14,11 @@ namespace SIASUN.Autopilot.Device.Message
         {
         }
 
+        public string GetId
+        {
+            get { return OperationCode; }
+        }
+
         /// <summary>
         /// 制动踏板力控制请求
         /// </summary>

+ 5 - 0
SIASUN.Autopilot.Device/Message/转向执行机构控制命令.cs

@@ -10,6 +10,11 @@ namespace SIASUN.Autopilot.Device.Message
     {
         public const string OperationCode = "5f5";
 
+        public string GetId
+        {
+            get { return OperationCode; }
+        }
+
         public 转向执行机构控制命令()
         {
         }

+ 2 - 0
SIASUN.Autopilot.Device/SIASUN.Autopilot.Device.csproj

@@ -36,6 +36,7 @@
     <Reference Include="System.Configuration" />
     <Reference Include="System.Core" />
     <Reference Include="System.Drawing" />
+    <Reference Include="System.Windows.Forms" />
     <Reference Include="System.Xml.Linq" />
     <Reference Include="System.Data.DataSetExtensions" />
     <Reference Include="Microsoft.CSharp" />
@@ -56,6 +57,7 @@
     <Compile Include="Common\DataAttribute.cs" />
     <Compile Include="Common\EventManage.cs" />
     <Compile Include="Common\MessageCoder.cs" />
+    <Compile Include="Common\MTimer.cs" />
     <Compile Include="Common\Package_Data_Msg .cs" />
     <Compile Include="Common\SimpleCommand.cs" />
     <Compile Include="Common\SubscribeCommand.cs" />

+ 0 - 51
SIASUN.Autopilot.View/FormMain.Designer.cs

@@ -32,11 +32,7 @@
             System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FormMain));
             this.ribbonControl = new DevExpress.XtraBars.Ribbon.RibbonControl();
             this.applicationMenu = new DevExpress.XtraBars.Ribbon.ApplicationMenu(this.components);
-            this.barBtnItem_ReLogIn = new DevExpress.XtraBars.BarButtonItem();
-            this.barBtn_ChangePassWord = new DevExpress.XtraBars.BarButtonItem();
             this.barBtn_InitMap = new DevExpress.XtraBars.BarButtonItem();
-            this.barButtonItem4 = new DevExpress.XtraBars.BarButtonItem();
-            this.barButtonItem5 = new DevExpress.XtraBars.BarButtonItem();
             this.barBtnItem_Quit = new DevExpress.XtraBars.BarButtonItem();
             this.skinRibbonGalleryBarItem1 = new DevExpress.XtraBars.SkinRibbonGalleryBarItem();
             this.barStaticItem_User = new DevExpress.XtraBars.BarStaticItem();
@@ -71,7 +67,6 @@
             this.ribbonControl.Items.AddRange(new DevExpress.XtraBars.BarItem[] {
             this.ribbonControl.ExpandCollapseItem,
             this.skinRibbonGalleryBarItem1,
-            this.barBtnItem_ReLogIn,
             this.barBtnItem_Quit,
             this.barStaticItem_User,
             this.pop_CloseCurrent,
@@ -79,9 +74,6 @@
             this.pop_CloseOther,
             this.label_Version,
             this.label_Company,
-            this.barBtn_ChangePassWord,
-            this.barButtonItem4,
-            this.barButtonItem5,
             this.barBtn_InitMap});
             this.ribbonControl.Location = new System.Drawing.Point(0, 0);
             this.ribbonControl.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
@@ -95,34 +87,12 @@
             // 
             // applicationMenu
             // 
-            this.applicationMenu.ItemLinks.Add(this.barBtnItem_ReLogIn);
-            this.applicationMenu.ItemLinks.Add(this.barBtn_ChangePassWord);
             this.applicationMenu.ItemLinks.Add(this.barBtn_InitMap);
-            this.applicationMenu.ItemLinks.Add(this.barButtonItem4);
-            this.applicationMenu.ItemLinks.Add(this.barButtonItem5);
             this.applicationMenu.ItemLinks.Add(this.barBtnItem_Quit);
             this.applicationMenu.MenuDrawMode = DevExpress.XtraBars.MenuDrawMode.LargeImagesText;
             this.applicationMenu.Name = "applicationMenu";
             this.applicationMenu.Ribbon = this.ribbonControl;
             // 
-            // barBtnItem_ReLogIn
-            // 
-            this.barBtnItem_ReLogIn.Caption = "重新登录";
-            this.barBtnItem_ReLogIn.Id = 2;
-            this.barBtnItem_ReLogIn.ImageOptions.Image = ((System.Drawing.Image)(resources.GetObject("barBtnItem_ReLogIn.ImageOptions.Image")));
-            this.barBtnItem_ReLogIn.ImageOptions.LargeImage = ((System.Drawing.Image)(resources.GetObject("barBtnItem_ReLogIn.ImageOptions.LargeImage")));
-            this.barBtnItem_ReLogIn.Name = "barBtnItem_ReLogIn";
-            this.barBtnItem_ReLogIn.ItemClick += new DevExpress.XtraBars.ItemClickEventHandler(this.barBtnItem_ReLogIn_ItemClick);
-            // 
-            // barBtn_ChangePassWord
-            // 
-            this.barBtn_ChangePassWord.Caption = "修改账户密码";
-            this.barBtn_ChangePassWord.Id = 21;
-            this.barBtn_ChangePassWord.ImageOptions.Image = ((System.Drawing.Image)(resources.GetObject("barBtn_ChangePassWord.ImageOptions.Image")));
-            this.barBtn_ChangePassWord.ImageOptions.LargeImage = ((System.Drawing.Image)(resources.GetObject("barBtn_ChangePassWord.ImageOptions.LargeImage")));
-            this.barBtn_ChangePassWord.Name = "barBtn_ChangePassWord";
-            this.barBtn_ChangePassWord.ItemClick += new DevExpress.XtraBars.ItemClickEventHandler(this.barBtn_ChangePassWord_ItemClick);
-            // 
             // barBtn_InitMap
             // 
             this.barBtn_InitMap.Caption = "初始化地图";
@@ -132,23 +102,6 @@
             this.barBtn_InitMap.Name = "barBtn_InitMap";
             this.barBtn_InitMap.ItemClick += new DevExpress.XtraBars.ItemClickEventHandler(this.barBtn_InitMap_ItemClick);
             // 
-            // barButtonItem4
-            // 
-            this.barButtonItem4.Caption = "OPC 断开";
-            this.barButtonItem4.Id = 24;
-            this.barButtonItem4.ImageOptions.Image = ((System.Drawing.Image)(resources.GetObject("barButtonItem4.ImageOptions.Image")));
-            this.barButtonItem4.ImageOptions.LargeImage = ((System.Drawing.Image)(resources.GetObject("barButtonItem4.ImageOptions.LargeImage")));
-            this.barButtonItem4.Name = "barButtonItem4";
-            this.barButtonItem4.ItemClick += new DevExpress.XtraBars.ItemClickEventHandler(this.barButtonItem4_ItemClick);
-            // 
-            // barButtonItem5
-            // 
-            this.barButtonItem5.Caption = "OPC 重连";
-            this.barButtonItem5.Id = 25;
-            this.barButtonItem5.ImageOptions.Image = ((System.Drawing.Image)(resources.GetObject("barButtonItem5.ImageOptions.Image")));
-            this.barButtonItem5.Name = "barButtonItem5";
-            this.barButtonItem5.ItemClick += new DevExpress.XtraBars.ItemClickEventHandler(this.barButtonItem5_ItemClick);
-            // 
             // barBtnItem_Quit
             // 
             this.barBtnItem_Quit.Caption = "退出系统";
@@ -316,7 +269,6 @@
         private DevExpress.XtraBars.Ribbon.RibbonControl ribbonControl;
         private DevExpress.XtraBars.SkinRibbonGalleryBarItem skinRibbonGalleryBarItem1;
         private DevExpress.XtraBars.Ribbon.ApplicationMenu applicationMenu;
-        private DevExpress.XtraBars.BarButtonItem barBtnItem_ReLogIn;
         private DevExpress.XtraBars.BarButtonItem barBtnItem_Quit;
         private DevExpress.XtraBars.BarStaticItem barStaticItem_User;
         private DevExpress.XtraBars.Ribbon.RibbonPageGroup ribbonPageGroup2;
@@ -335,9 +287,6 @@
         private DevExpress.XtraBars.Ribbon.RibbonStatusBar ribbonStatusBar1;
         private DevExpress.XtraBars.BarStaticItem label_Version;
         private DevExpress.XtraBars.BarStaticItem label_Company;
-        private DevExpress.XtraBars.BarButtonItem barBtn_ChangePassWord;
-        private DevExpress.XtraBars.BarButtonItem barButtonItem4;
-        private DevExpress.XtraBars.BarButtonItem barButtonItem5;
         private DevExpress.XtraBars.BarButtonItem barBtn_InitMap;
         private DevExpress.XtraBars.PopupMenu popupMenu3;
     }

+ 1 - 68
SIASUN.Autopilot.View/FormMain.cs

@@ -100,74 +100,7 @@ namespace SIASUN.Autopilot.View
                     }
                 }
             }
-        }
-
-        /// <summary>
-        /// 重新登录
-        /// </summary>
-        /// <param name="sender"></param>
-        /// <param name="e"></param>
-        private void barBtnItem_ReLogIn_ItemClick(object sender, ItemClickEventArgs e)
-        {
-            //SysEnvironment.CurrentLoginID = null;
-            //SysEnvironment.passWordMD5 = null;
-            this.barStaticItem_User.Caption = "欢迎登录";
-            pop_CloseAll_ItemClick(sender, e);
-            this.ribbonControl.Pages.Clear();
-            //ribbonHelper = null;
-            //LogIn();
-        }
-
-        /// <summary>
-        /// 修改密码
-        /// </summary>
-        /// <param name="sender"></param>
-        /// <param name="e"></param>
-        private void barBtn_ChangePassWord_ItemClick(object sender, ItemClickEventArgs e)
-        {
-
-        }
-
-        /// <summary>
-        /// opc断开
-        /// </summary>
-        /// <param name="sender"></param>
-        /// <param name="e"></param>
-        private void barButtonItem4_ItemClick(object sender, ItemClickEventArgs e)
-        {
-            //try
-            //{
-            //    OpcFactory.Instance.opcHelper.Opc_disConnect();
-            //    DevExpress.XtraEditors.XtraMessageBox.Show("OPC连接已断开");
-            //}
-            //catch (Exception ex)
-            //{
-            //    DevExpress.XtraEditors.XtraMessageBox.Show("OPC断开失败", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
-            //    LogHelper.log.Error(string.Format("OPC线程断开失败:{0}", ex.ToString()));
-            //}
-        }
-
-        /// <summary>
-        /// opc重连
-        /// </summary>
-        /// <param name="sender"></param>
-        /// <param name="e"></param>
-        private void barButtonItem5_ItemClick(object sender, ItemClickEventArgs e)
-        {
-            //try
-            //{
-            //    //Thread.Sleep(5000);
-            //    OpcFactory.Instance.CreateOpcServer("beckhoff");
-            //    OpcFactory.Instance.opcHelper.Opc_Init(BLLFactory<BlBeckhoffNode>.Instance.GetAll());
-            //    if (e != null)
-            //        DevExpress.XtraEditors.XtraMessageBox.Show("OPC连接成功");
-            //}
-            //catch (Exception ex)
-            //{
-            //    DevExpress.XtraEditors.XtraMessageBox.Show("OPC连接失败\n" + ex.Message, "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
-            //    LogHelper.log.Error(string.Format("OPC线程重启失败:{0}", ex.ToString()));
-            //}
-        }               
+        }            
 
         /// <summary>
         /// 退出系统

+ 0 - 183
SIASUN.Autopilot.View/FormMain.resx

@@ -121,135 +121,6 @@
     <value>17, 17</value>
   </metadata>
   <assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
-  <data name="barBtnItem_ReLogIn.ImageOptions.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
-    <value>
-        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAABl0RVh0U29m
-        dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAAPdEVYdFRpdGxlAEN1c3RvbWVyO5zd1eIAAAK8SURB
-        VDhPZZJdSFNhHMaPTc+a7dNt7Uv32ebcHJ7NzfkxnWuoLRcG6hAV85OMCtQMQanURgbaTZAVESUGQhfZ
-        hSkSXVjgRdlFBFEXQRcFiQZZ2SzDp3eisM0DPzjP/32e5xze96UAxFFm5FNeLbeqKJ2zkCdj/7SLUz5Y
-        +aw6iqKSEr1R9gxKNVxzuVEY6fCZcLrCguZiPZg0+l8WL3lIz2HxE/1xIoonI/V6vVuDlhIDfFouHBI2
-        WkuytzI5LBjopKuJ/jgRJV/BedRQoEHApsPIuU68mruJZzd7UCDZv6JhUTOJ/jgRxSGlB/MVqVvflz9j
-        c+Ul1t6OY/FeJ3rd0jU1i5pI9MeJKGL2PnU1o/rz69tX/P44hS/Pw3hxuxndDtGaIInKTfTHie0BRYmG
-        al1L7xceY3VpHO+mu/Cwz49GE/c1WVPt8e++HDseioaTCer2CvvUdLgdi5OXMHO5EiOVehRnCJ6QNSuB
-        rdUZ4gt2HrYoTWxzF3oX/WVHcTfci/FWP67VeTDa1QbG4YJao3tD02wv8R4gbN+L3YJkmVxh95UFVnv6
-        BhEevYFIJIJwlgXdBgPW19dRVdOEYFUIaq3uBynxkwwdWyBwOPMn2zu7cGXsFjrO9mN+/inuNzZhLBjE
-        7OwcnIXlsDAemK0M+ALhDMnIYgvS3YUln84PhHGq5yKCtW2ob2jCxIkWXHC5UF0TgpUpht5kh0ptgkAg
-        WiaZzNiCQwVF3o2BoVFUN5yELxBCljUHw3YHziiV0BmM0BoZEjZDptSDxxdskow9rsDlLtro7R9G6ZFa
-        uD0B2N2HwReKweUKoTHYoEg3QSrXQSLTkBn3L8nYYgsk5Ct3cuxOWLMZmMwW6A0msut6KFUZOChTQCyW
-        kl8XgsvjgabpByQjjy2Inr+UED3n3B2cBNcOeTEwBDkhBQD1HxX+3ye8Xt6YAAAAAElFTkSuQmCC
-</value>
-  </data>
-  <data name="barBtnItem_ReLogIn.ImageOptions.LargeImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
-    <value>
-        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
-</value>
-  </data>
-  <data name="barBtn_ChangePassWord.ImageOptions.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
-    <value>
-        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAABl0RVh0U29m
-        dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAALdEVYdFRpdGxlAFVzZXI7l1sKAgAAAx1JREFUOE9V
-        k3lIU3EAx9/23tvzWHmkuZybTidtTNOpU0k0zw5Ls8PMowxbupXkUZa6LI8OzYIIsiSoxKwQUTPpWhaW
-        mIRLIomCggKDovpDEkuTvv3eyth+8Pnj+/ge8H78KAD/KQsQUUYFu14vYwfzpcz3HAn9JsOD3kpRlMDW
-        Z4ud2O0nUh2MkPzoOpyNu6f16DiQjhw/57n1/g51K+XsQlvvPHaiyJc921qYjN76HJzJ1sEQ7AnTmmW/
-        NwZwSFOIGm2989iJnTK2+1LxapTq/HC50ojxe+fx8EI5slXiL6m+bL+tdx47kevN1BYonH9Pfp7Ary/P
-        MPmyBcOXDaiI9pxM8aHbbL3z2IlAJ6G8TCedmfr2CdPvruPj46N40roDpVq3SZlYsJz8zAUEMYEjCAn2
-        BeS4NWXpRl8P9uLraAte9ZTiRkUiNvk7vyiI8G42JchHauKkP0rCPQYL1C5FxC+0BmtYvpBiCPKSmMDr
-        PQ16DLcfQX/DWtSu8kOuetHbK4Uxc5Y2A6bGmjB0Lg/1qcrZDVJOzwf5w8kFwmAjzQ2f9JLAlBSGM1mh
-        aExTI1/ji6pIH/DhuTdn0Ve3Dl1VSTCfSMGaxYyZDzNqoVBb7ST+ejN1NSx7jdi3Ih5Prx1GZ20uWV+K
-        mlipdfnXeBO6KhPRURqNb7cykeAqnOYLXLYzbHt7VBQsewrxKDkOLSEaFIdpYQgJRrnCG/vCF2HifgVm
-        LSb8HNqN6YFc9FWFImoBNcAX+JQwovfmrM14kpGKuyEq9GuU6FTLcE7hibKlbnjQvBkzlmp86M4jy1tI
-        WAt9mMtskBNl5AuUVSz3c8SwEwOxkbijVaNHrcB5pQTlKneYT2WS5WrcP56CjCUsEl2F0Imp5xpHqphk
-        RdaCSsbBWnAvPAi3Q1XoUClwQOMBc3MmZsZMMB9LwTYvBo1eLDIowSzJRBD4WxPwBR4baPZiNcPhIM1h
-        P2GXgIExyJUsH7Iup7vSyCIPkieSElwlGclUbzylcuTjf5s8CRpC+D8S8pXOyJRxiHWnB2kBlUy+RRNC
-        CRICy4dVjhT1B3hg45dPadMbAAAAAElFTkSuQmCC
-</value>
-  </data>
-  <data name="barBtn_ChangePassWord.ImageOptions.LargeImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
-    <value>
-        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
-</value>
-  </data>
   <data name="barBtn_InitMap.ImageOptions.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
     <value>
         iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAABl0RVh0U29m
@@ -316,60 +187,6 @@
         dvzRsSUGyzdHY9mmKCz5LhKL10fg63VhsF4bioVr9FjwTQhWbo1iu0jY2JLNe9k2Ass2CuEqWq3cgy9t
         AjFvhQ7zVwbDalUIvuJ9X/F+6zWhWMTnLZHnrtX3MLd6F8jvM3kv/5I8TZ4hz5LRZCx5ibxCJpJJpijn
         8rlcl3Yjidz3G/KUCTmWz+SatBlHXiZy76tGRtz/T0q82+ZZolI7AAAAAElFTkSuQmCC
-</value>
-  </data>
-  <data name="barButtonItem4.ImageOptions.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
-    <value>
-        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAABl0RVh0U29m
-        dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAARdEVYdFRpdGxlAFBhdXNlO1N0b3A7O4p6PAAAAWNJ
-        REFUOE+t08Erg3Ecx/Gh/Q6c/RHUSkpKqZVWS7ZysRuSg4PD5kBsYmVkikgytaSozeSgNtthRas1YQ7S
-        mqgpIiMrNRJ9PB+2evSr5+Rd3/r0en7XR/efVaxGLQFfzHqvXH41ag3Rft0aovEb35Rcqmol0oF8MYPn
-        tyy4aWWn8ZvKpfRLe+0ofF7i6GYG3DQNlxLzu2bkP9JI5qbATdNwKeENmnD3fojEtRvcNA2XEp7NNuSK
-        YRxcjYObpuFSYnLdiOxrEPHsGLhpGi4lnGutOH/xI5YZATdN7ZELu9qlxPByC9JPiwic2sBNU/vWcafa
-        pYRjoRmph2lspCzgpmm4lBj0NiFx64I/aQY3TcOlxICnEfHcEHwJE7hpGi4l+t0NX9snvZjbN4KbVvad
-        sz7Mhv+4lL7LXjfa7TQ89rgMBZujfoLG46bxG9+UXKpSuWrlaktXo9zPz1TaZecbvlXS6b4BZWorSpXd
-        XfEAAAAASUVORK5CYII=
-</value>
-  </data>
-  <data name="barButtonItem4.ImageOptions.LargeImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
-    <value>
-        iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAABl0RVh0U29m
-        dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAARdEVYdFRpdGxlAFBhdXNlO1N0b3A7O4p6PAAAAnxJ
-        REFUWEfFlu1rzXEYxift+8Zr5W8QIkmS5qG1LIeX8kIiUR5KqEMz1jDP0vEw06aWVpSWWsbRmmHWIUJ7
-        YdPG2fJwamm10LTW7Vx355burvq+OR1Xffqd+3PVVefdt0xE/itUlhIqQTHD9g0qQTHD9g0qQTHD9g0q
-        QTHD9g0qgcuM6+nE5aZH63N5BF/c8JFOw/YNKoHLzMaHCfk5/e0vuOEjnYbtG1QCl/KrnetkYjorL0ZP
-        K7jhI52G7RtUApeQ6qiW8akByYw0KLjhI52G7RtUApdw6d5aGZt6K33ZEwpu+EinYfsGlcAlnL9bJbnf
-        Gen9WK/gho90GrZvUAlcwpk7lfJ58rE8Ha5TcMNHOg3bN6gELqGhbY1kf3VKz1Ctghs+0mnYvkElcAn1
-        ratk6Ee7dH84ouCGj3Qatm9QCVzCsZYKGZhok67Bwwpu+EinYfsGlcAl1NxYIf3jLZJ+n1Rww0c6Dds3
-        qAQuIXltubz5fkXa322Tjv7dghved7dfb/y307B9g0rgEg6mlsmrsQty6+UGBTd8pNOwfYNK4BL2XVwq
-        mdxJac0kFNzwkU7D9g0qgUvYe3aJ9H45Kjf7qhXc8JFOw/YNKoFL2HVqsfSMJqX5eZWCGz7Sadi+QSVw
-        CTuOL5KuT/ul6Vmlghs+0mnYvkElcAnb6xZKeniPND5ZreCGj3Qatm9QCVzC1toFcn9wp6S6K+Tcg5WC
-        Gz7Sadi+QSVwKd90YG7z5kPzvm6pmT+JL274SKdh+waVwAXPq1l5ZueZU/ji1idZ4TfrNGzfoBK44IGJ
-        Qf3HBXDro7Twm3Uatm9QCYoZtm9QCYoZtm9QWUqoLB1S9ge9zuKdB2vHxgAAAABJRU5ErkJggg==
-</value>
-  </data>
-  <data name="barButtonItem5.ImageOptions.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
-    <value>
-        iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAABl0RVh0U29m
-        dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAARdEVYdFRpdGxlAFBsYXk7U3RhcnQ7XWFAegAAA/pJ
-        REFUWEfFln1QVFUchjXjmkw26R+W6X81fcwYojaxaoEps/KxJo3rR9mYaBI4mlqOTSjJsLK4JAiIuK4f
-        6+KCkQKrQhgzrZmCsHy51oiRIK5m6DhZNs40zdjb755uTOecS4Mwa8/MO8N97jnnvfdcdu8OAfC/Rl8G
-        EalLFEwGEalLFEwGEalLFEwGEalLFEzyDLV/+XrFjuPxY7XjQSF1iYJJnmH2E3NA+XlnVfy7prefe0jz
-        A0LqEgWTPCE7vzChvssNx9crUFht8uYfjXtaO3ffSF2iYJJH2XE8Djd/8+PK7SYc9m0CHd/N98Suf98a
-        8bA2pt9IXaJgkkfJ88Si504L/Nf3ofNWNZqulMPhTcb2ytjm7M+M4dq4fiF1iYJJHiWnfDau/9qI5kAB
-        y4WeUgRun4Wn2QI698e2I8YtG3dFPqKN/0+kLlEwyaNkf27E1V/OwBfI59J+4wj8P1Zh91crYSszXrSW
-        REdqc/pE6hIFkzxKVmk0um7VorF7u5TWqw5cvFGBYy020Lh7me5ZRWmOqMe0uRJSlyiY5FG2HJyJc9dc
-        qOuyof5yjm7U8xd6arDfuxqW4pmBDNdr8dp8DqlLFEzyKOnOGfB1F+Lo+WU43ZmFus5s3Zy9nAv/tWJU
-        t+Xg04qF2Lw/qjTV/uoYbR2G1CUKJnmUtD2RVLANZS0LUN62BN7vN+P0JVufaewuQvtPlSiqWQaae5PW
-        6P3ykrpEwSSP8rH9FZzssKC0eZ4WMzzn34O3IwOnfsjqzTeXttJHdDc9Djdcp9aC5t1bXzDNSWsM+3up
-        AV7AhsJpqG1PhduXwKXE9wYOty5B1bdr6AK2oiXgRLXfStu/COtyDd+ZU14w0fxHKYO7gA/yDFSyDq6G
-        OVJKfGZ6LMvhOZeC9DIjFUfcSdwY/knoyBD12Y+gqN+WQ9WFVKQuUTDJo6zJeRmVbclw1sdxOdT0Jipa
-        k2A7ZgKN+TMpY3Ll1JjxL9Ic9a5DKNKLS+oSBZM8yirbS/QPuBR762JYXA0J7Nh+ch42HIhCSubkjoQV
-        z5pp7OOU4RR1y3vv+t9IXaJgkkdJsU6Bu3Eh9pyZjQP1c1HcYEbqwRlIzpxy960PJ1hHPzHiSRoXSuG2
-        Ww+pSxRM8ihJlklw1iVQ5sJSPgurCgx4JzWsxhAzbhKdH0nR3W49pC5RMMmjLE8PR15tNNY6pmPppond
-        8YnPLCY/iqK+gPrcbj2kLlEwyaMkpoVRcdjv81c/nztmfOg4cv3abj2kLlEwyROy+KMJJyJinjLQ3+pL
-        RqEM+GeZ1CUKJnnULVY/z/e93XpIXaJgkkctVO94UMX/IHWJgskgInWJgskgInWJ4kFHVz64YMhfkU05
-        On2zdlYAAAAASUVORK5CYII=
 </value>
   </data>
   <data name="barBtnItem_Quit.ImageOptions.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">

+ 11 - 0
SIASUN.Autopilot.View/FormTest.cs

@@ -1,4 +1,6 @@
 using DevExpress.Utils;
+using SIASUN.Autopilot.BLL.Controler;
+using SIASUN.Autopilot.Device.Message;
 using System;
 using System.Collections.Generic;
 using System.Drawing;
@@ -142,6 +144,15 @@ namespace SIASUN.Autopilot.View
             list.Add(points2[i]);
             i++;
             this.picExControl1.Invalidate();
+
+
+            BlControler bl = new BlControler();
+            //bl.RCUEnableRequest("1");
+            控制器上电命令 aa = new 控制器上电命令();
+
+            int a = -1;
+            byte[] b = System.Text.Encoding.Default.GetBytes(a.ToString());
+
         }
 
         private void btn_Add_Click(object sender, EventArgs e)