public MainWindow() { //首先保存错误 var domain = AppDomain.CurrentDomain; domain.UnhandledException += (sender, targs) => { Console.WriteLine(config.ToString()); Console.WriteLine(chart1.ToString()); var ex = targs.ExceptionObject as Exception; if (ex != null) { MessageBox.Show("message: " + ex.Message + " trace: " + ex.StackTrace); //log("message: " + ex.Message + " trace: " + ex.StackTrace); } }; InitializeComponent(); if (File.Exists(configfilename)) //加载配置文件 { config = Config.load(configfilename); } DataSrc.ini(rx_fun); if (config.socket.type != DSType.uart) { DataSrc.dsdict[config.socket.type] = DataSrc.factory(config.socket.type, rx_fun); DataSrc.dsdict[config.socket.type].rx_event = rx_fun; //注册回调函数 } // 获取COM口列表 bt_refresh_uart_Click(null, null); }
void ini_by_config(string fname) //从配置文件初始化程序,输入配置文件名 { Config.config = Config.load(fname); //首先清除上一个配置 bt_open_datasrc.Content = "关闭端口"; btnConnCom_Click(bt_open_datasrc, null); //关闭数据源 DataSrc.dslist.Clear(); if (rpl_win.rplobj != null) { rpl_win.rplobj.close(); } rpl_win.rplobj = null; //开始配置 Config.configPath = fname; //记录配置文件名 Config.config.plugin_path = Tool.relPath_2_abs(fname, Config.config.plugin_path); //把插件目录的位置变为绝对路径 //加载数据源 if (Config.config.data_src != null) { foreach (var item in Config.config.data_src) //对于每一种配置的数据源 { var ds = DataSrc.factory(item, rx_fun); DataSrc.dslist.Add(ds); } } Dictionary <string, object> td = new Dictionary <string, object>(); td["type"] = "replay"; rpl_win.rplobj = DataSrc.factory(td, rx_fun) as DataSrc_replay; //记录回放对象 DataSrc.dslist.Add(rpl_win.rplobj); rpl_win.rplobj.open_cb = () => bt_replay_dlg_Click(null, null); td["type"] = "file"; var fo = DataSrc.factory(td, rx_fun) as DataSrc_file; //文件输入对象 DataSrc.dslist.Add(fo); Title = Config.config.title_str; // 获取COM口列表 bt_refresh_uart_Click(null, null); if (Config.config.mv_w != 0) { Width = Config.config.mv_w; } if (Config.config.mv_h != 0) { Height = Config.config.mv_h; } //加入配置 CCmd_Button.bt_margin_len = Config.config.bt_margin; CCmd_Button.ctrl_cols = Config.config.ctrl_cols; CCmd_Button.cmds = commc.cmds; CCmd_Button.dset = commc.dset; CCmd_Button.send_cmd_str = send_cmd_str; mc_ini(); //内部先清除上一个配置 }
static public void open(Config cfg, string portname) //从配置或名称传入 { if (portname != "socket") //若是串口 { cur_ds = dsdict[DSType.uart]; (cur_ds as DataSrc_uart).uart.PortName = portname; } else { cur_ds = dsdict[cfg.socket.type]; //若是网络 } cur_ds.open(cfg); }
private void btnConnCom_Click(object sender, RoutedEventArgs e) { var btn = sender as Button; try { if (btn.Content.ToString() == "打开端口") { DataSrc.open(config, comPort.Text); btn.Content = "关闭端口"; } else { btn.Content = "打开端口"; DataSrc.cur_ds.close(); } } catch { } }
static public DataSrc cur_ds; //当前数据源 static public void ini(RX_CB cb) //初始化默认的串口数据源 { cur_ds = factory(DSType.uart, cb); dsdict[DSType.uart] = cur_ds; }