//发送config1 public void sendConfig1Pack(Object o) { ArrayList al = (ArrayList)o; string slaveId = Convert.ToString(al[0]); Gen2SlaveConfig g = (Gen2SlaveConfig)al[1]; Gen2SlaveInfo gsi = (Gen2SlaveInfo)al[2]; if ((g.Sid == null || g.Sid.Equals("")) && (gsi.Sid != null && !gsi.Sid.Equals(""))) { g.Sid = DataConverter.string2Hex(gsi.Sid).ToString(); } if ((g.Covth == null || g.Covth.Equals("")) && (gsi.Covth != null && !gsi.Covth.Equals(""))) { g.Covth = gsi.Covth.Replace("mV", String.Empty); } if ((g.Cuvth == null || g.Cuvth.Equals("")) && (gsi.Cuvth != null && !gsi.Cuvth.Equals(""))) { g.Cuvth = gsi.Cuvth.Replace("mV", String.Empty); } if ((g.Foth == null || g.Foth.Equals("")) && (gsi.Foth != null && !gsi.Foth.Equals(""))) { g.Foth = gsi.Foth.Replace("℃", String.Empty); } if ((g.Fcth == null || g.Fcth.Equals("")) && (gsi.Fcth != null && !gsi.Fcth.Equals(""))) { g.Fcth = gsi.Fcth.Replace("℃", String.Empty); } if (!(DataConverter.canStirng2int(g.Sid) && DataConverter.canStirng2int(g.Covth) && DataConverter.canStirng2int(g.Cuvth) && DataConverter.canStirng2int(g.Foth) && DataConverter.canStirng2int(g.Fcth))) { flushVM(new Object[] { FunCode.SHOWINFO, "wrongdata" }); return; } CANSDK.VCI_CAN_OBJ obj = new CANSDK.VCI_CAN_OBJ(); obj.Init(); obj.RemoteFlag = 0; //数据帧 obj.ExternFlag = 1; //扩展帧 obj.SendType = 0; //正常发送 obj.ID = uint.Parse("0C21" + slaveId + "7F", System.Globalization.NumberStyles.HexNumber); byte[] b = new byte[8]; b[1] = (byte)Convert.ToInt32(g.Sid); short d = (short)Convert.ToInt32(g.Covth); byte[] t = System.BitConverter.GetBytes(d); b[2] = t[0]; b[3] = t[1]; d = (short)Convert.ToInt32(g.Cuvth); t = System.BitConverter.GetBytes(d); b[4] = t[0]; b[5] = t[1]; b[6] = (byte)(Convert.ToInt32(g.Foth) + 40); b[7] = (byte)(Convert.ToInt32(g.Fcth) + 40); obj.Data = b; obj.DataLen = 8; // Console.WriteLine("发送:" + DataConverter.byteToHexStrForData(obj.Data).Substring(0, 2 * obj.DataLen) + ",ID:" + obj.ID.ToString("X2")); CANSDK.VCI_Transmit(CANSDK.m_devtype, CANSDK.m_devind, CANSDK.m_canind, ref obj, 1); flushVM(new Object[] { FunCode.SHOWINFO, "sendSuc" }); }
//发送config2 public void sendConfig2Pack(Object o) { ArrayList al = (ArrayList)o; string slaveId = Convert.ToString(al[0]); Gen2SlaveConfig g = (Gen2SlaveConfig)al[1]; Gen2SlaveInfo gsi = (Gen2SlaveInfo)al[2]; if ((g.Bcnt_a == null || g.Bcnt_a.Equals("")) && (gsi.Bcnt_A != null && !gsi.Bcnt_A.Equals(""))) { g.Bcnt_a = gsi.Bcnt_A; } if ((g.Bcnt_b == null || g.Bcnt_b.Equals("")) && (gsi.Bcnt_B != null && !gsi.Bcnt_B.Equals(""))) { g.Bcnt_b = gsi.Bcnt_B; } if ((g.Bcnt_c == null || g.Bcnt_c.Equals("")) && (gsi.Bcnt_C != null && !gsi.Bcnt_C.Equals(""))) { g.Bcnt_c = gsi.Bcnt_C; } if ((g.Bcnt_d == null || g.Bcnt_d.Equals("")) && (gsi.Bcnt_D != null && !gsi.Bcnt_D.Equals(""))) { g.Bcnt_d = gsi.Bcnt_D; } if ((g.Bcnt_e == null || g.Bcnt_e.Equals("")) && (gsi.Bcnt_E != null && !gsi.Bcnt_E.Equals(""))) { g.Bcnt_e = gsi.Bcnt_E; } if ((g.Bcnt_f == null || g.Bcnt_f.Equals("")) && (gsi.Bcnt_F != null && !gsi.Bcnt_F.Equals(""))) { g.Bcnt_f = gsi.Bcnt_F; } if ((g.MaxCharge == null || g.MaxCharge.Equals("")) && (gsi.MaxChargeCur != null && !gsi.MaxChargeCur.Equals(""))) { g.MaxCharge = gsi.MaxChargeCur.Replace("A", String.Empty); } if (!(DataConverter.canStirng2int(g.Bcnt_a) && DataConverter.canStirng2int(g.Bcnt_b) && DataConverter.canStirng2int(g.Bcnt_c) && DataConverter.canStirng2int(g.Bcnt_d) && DataConverter.canStirng2int(g.Bcnt_e) && DataConverter.canStirng2int(g.Bcnt_f) && DataConverter.canStirng2double(g.MaxCharge))) { flushVM(new Object[] { FunCode.SHOWINFO, "wrongdata" }); return; } CANSDK.VCI_CAN_OBJ obj = new CANSDK.VCI_CAN_OBJ(); obj.Init(); obj.RemoteFlag = 0; //数据帧 obj.ExternFlag = 1; //扩展帧 obj.SendType = 0; //正常发送 obj.ID = uint.Parse("0C24" + slaveId + "7F", System.Globalization.NumberStyles.HexNumber); byte[] b = new byte[8]; b[0] = (byte)Convert.ToInt32(g.Bcnt_a); b[1] = (byte)Convert.ToInt32(g.Bcnt_b); b[2] = (byte)Convert.ToInt32(g.Bcnt_c); b[3] = (byte)Convert.ToInt32(g.Bcnt_d); b[4] = (byte)Convert.ToInt32(g.Bcnt_e); b[5] = (byte)Convert.ToInt32(g.Bcnt_f); short d = (short)(Convert.ToInt32(g.MaxCharge) * 10); byte[] t = System.BitConverter.GetBytes(d); b[6] = t[0]; b[7] = t[1]; obj.Data = b; obj.DataLen = 8; // Console.WriteLine("发送:" + DataConverter.byteToHexStrForData(obj.Data).Substring(0, 2 * obj.DataLen) + ",ID:" + obj.ID.ToString("X2")); CANSDK.VCI_Transmit(CANSDK.m_devtype, CANSDK.m_devind, CANSDK.m_canind, ref obj, 1); flushVM(new Object[] { FunCode.SHOWINFO, "sendSuc" }); }
private void Init() { ConsoleManager.Show();//打开信息打印窗口 gen2Service.changeViewForGen2VM += changeView; gen2SlaveInfo = new Gen2SlaveInfo(); gen2SlaveConfig = new Gen2SlaveConfig(); ConnectCanCommand = new DelegateCommand <Button>(RunConnectCanCommand); RunFun = new DelegateCommand <Object>(RunSendFrame); CbI18nClickCommand = new DelegateCommand <ComboBox>(RunCbI18nClickCommand);//国际化选框 categoryI18nList.Add(new CategoryInfo() { Name = "English", Value = "en_US", sourceName = "English" }); categoryI18nList.Add(new CategoryInfo() { Name = "中文", Value = "zh_CN", sourceName = "Chinese" }); XmlDocument xmlDoc = new XmlDocument(); XmlReaderSettings settings = new XmlReaderSettings(); settings.IgnoreComments = true;//忽略文档里面的注释 //XmlReader reader = XmlReader.Create("../../Config/Config.xml", settings); XmlReader reader = XmlReader.Create("Config/Config.xml", settings); xmlDoc.Load(reader); // 得到根节点bookstore XmlNode xn = xmlDoc.SelectSingleNode("appSettings"); // 得到根节点的所有子节点 XmlNodeList xnl = xn.ChildNodes; foreach (XmlNode x in xnl) { if (x.Name.Equals("i18n")) { selectI18n = int.Parse(x.InnerText); break; } } reader.Close(); ResourceDictionary langRd = Application.LoadComponent(new Uri("i18n/" + CategoryI18nList[selectI18n].sourceName + ".xaml", UriKind.Relative)) as ResourceDictionary; page.Resources.MergedDictionaries.Add(langRd); //初始CAN通道 canChannelList.Add("CAN0"); canChannelList.Add("CAN1"); //初始化波特率 canBaudRateList.Add(new BaudRateModel() { Baudratename = "100Kbps", Time0 = 0x04, Time1 = 0x1C }); canBaudRateList.Add(new BaudRateModel() { Baudratename = "125Kbps", Time0 = 0x03, Time1 = 0x1C }); canBaudRateList.Add(new BaudRateModel() { Baudratename = "200Kbps", Time0 = 0x81, Time1 = 0xFA }); canBaudRateList.Add(new BaudRateModel() { Baudratename = "250Kbps", Time0 = 0x01, Time1 = 0x1C }); canBaudRateList.Add(new BaudRateModel() { Baudratename = "500Kbps", Time0 = 0x00, Time1 = 0x1C }); canBaudRateList.Add(new BaudRateModel() { Baudratename = "1Mbps", Time0 = 0x00, Time1 = 0x14 }); InitView(); }