Esempio n. 1
0
        /**关于设备的驱动配置和驱动程序的存放说明
         * 程序文件夹下的DriveConfig文件夹下面存放全部需要使用的设备采集的驱动的配置文件,文件是json格式的,文件的命名使用设备的序列号来命名,单设备不允许重复,
         * 严格意义上来说,一个项目中都不允许重复,所有的配置文件都必须继承于DriveConfigBase这个基础类。
         * Drive这个目录下面,存放了全部的我们设备驱动程序,按照文件夹名称等分类来进行排布。
         * 程序根目录下放一个json配置文件,用来存放设备驱动的文件夹,主程序等信息
         */
        private void StartDrive(string strStartDrive)
        {
            string strDriveConfigPath = AppDomain.CurrentDomain.BaseDirectory + "/DriveConfig/" + strStartDrive + ".json";

            //直接发送配置编号
            if (System.IO.File.Exists(strDriveConfigPath) == true)
            {
                try
                {
                    ConfigBase configBase = ConfigBase.ReadConfig <ConfigBase>(strDriveConfigPath);
                    //找到驱动所在的文件夹及文件
                    DriveListConfig config = driveLists.Single(n => n.DriveType == configBase.DriveType);
                    //启动程序
                    ProcessStartInfo startInfo = new ProcessStartInfo();
                    startInfo.CreateNoWindow   = true;
                    startInfo.WorkingDirectory = AppDomain.CurrentDomain.BaseDirectory + "/Drive/" + config.DrivePath;
                    startInfo.FileName         = "dotnet";
                    startInfo.Arguments        = startInfo.WorkingDirectory + "/" + config.DriveStartFile + " " + strDriveConfigPath;
                    startInfo.UseShellExecute  = false;
                    if (DriveProcess.ContainsKey(strStartDrive) == true)
                    {
                        //存在进程的时候
                        DriveProcess[strStartDrive].Kill();
                        DriveProcess.Remove(strStartDrive);
                    }
                    Process process = Process.Start(startInfo);
                    DriveProcess.Add(strStartDrive, process);
                }
                catch (Exception ex)
                {
                    logger.LogError(ex.ToString());
                }
            }
        }
Esempio n. 2
0
 public DriveStatusService(ILogger <DriveStatusService> logger)
 {
     this.logger = logger;
     bus         = new BusClient();
     this.bus.Subscribe(BusOption.CTRL_START);
     this.bus.Subscribe(BusOption.CTRL_STOP);
     this.bus.OnReceived += Bus_OnReceived;
     driveLists           = DriveListConfig.ReadConfig();
     StartAllDrive();    //服务启动的时候启动全部的设备
 }