/**关于设备的驱动配置和驱动程序的存放说明 * 程序文件夹下的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()); } } }
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(); //服务启动的时候启动全部的设备 }