/// <summary> /// 生成端口的信道协议与数据协议配置 /// </summary> private void GenaratePortXMLConfig() { // 标记为删除的就不需要添加到结果集中了 m_listPortConfig = new List <CPortProtocolConfig>(); // 获取修改了的所有数据 for (int i = 0; i < m_dataTable.Rows.Count; ++i) { if (!m_listMaskedDeletedRows.Contains(i)) { // 不包含才需要判断 CPortProtocolConfig config = new CPortProtocolConfig(); config.PortNumber = int.Parse(m_dataTable.Rows[i][CS_PortNumber].ToString()); config.ProtocolChannelName = m_dataTable.Rows[i][CS_ProtocolChannel].ToString(); if (config.ProtocolChannelName == CS_None) { config.ProtocolChannelName = ""; //为空 } config.ProtocolDataName = m_dataTable.Rows[i][CS_ProtocolData].ToString(); if (config.ProtocolDataName == CS_None) { config.ProtocolDataName = ""; //为空 } m_listPortConfig.Add(config); }// end of if } }
/// <summary> /// 生成m_listPortConfig,并清空状态m_listEditedRows, m_listMaskedDeletedRows /// </summary> private void GeneratePortConfig() { // 标记为删除的就不需要添加到结果集中了 m_listPortConfig = new List <CPortProtocolConfig>(); // 获取修改了的所有数据 for (int i = 0; i < m_dataTable.Rows.Count; ++i) { if (!m_listMaskedDeletedRows.Contains(i)) { // 不包含才需要判断 CPortProtocolConfig config = new CPortProtocolConfig(); config.PortNumber = int.Parse(m_dataTable.Rows[i][CS_PortNumber].ToString()); config.ProtocolChannelName = m_dataTable.Rows[i][CS_ProtocolChannel].ToString(); if (CS_UDPorTCP_TCP == m_dataTable.Rows[i][CS_UDPorTCP].ToString()) { // 配置默认通讯方式为TCP config.BTcpOrUdp = true; } else { config.BTcpOrUdp = false; } config.ProtocolDataName = m_dataTable.Rows[i][CS_ProtocolData].ToString(); if (config.ProtocolDataName == CS_None) { config.ProtocolDataName = ""; //空数据协议 } if (CS_StartType_Auto == m_dataTable.Rows[i][CS_StartType].ToString()) { // 自动启动 config.BAutoStart = true; } else { config.BAutoStart = false; } if (CS_Status_Enabled == m_dataTable.Rows[i][CS_CurrentStatus].ToString()) { // 启动状态 config.BStartOrNot = true; } else { config.BStartOrNot = false; } m_listPortConfig.Add(config); }// end of if } m_listEditedRows.Clear(); m_listMaskedDeletedRows.Clear(); }
private void SetPorts(IList <CEntitySerialPort> ports) { base.m_dataTable.Rows.Clear(); base.m_dataTableBak.Rows.Clear(); int iActualPortCount = 0; string strMessageInfo = ""; bool _bDoDelete = false; //是否需要修改数据库,默认为false List <int> _listDoDelete = new List <int>(); foreach (var item in ports) { if (!m_listActualPortNumber.Contains(item.PortNumber)) { _bDoDelete = true; _listDoDelete.Add(item.PortNumber); //删除列表 strMessageInfo += string.Format("数据库中配置的COM{0}不存在,自动删除\r\n", item.PortNumber); continue; } // 获取数据协议与信道协议的配置 CPortProtocolConfig config = GetPortConfig(item.PortNumber); if (config == null) { config = new CPortProtocolConfig(); config.ProtocolChannelName = CS_None; config.ProtocolDataName = CS_None; } else { if (config.ProtocolDataName == null || config.ProtocolDataName.Equals("")) { config.ProtocolDataName = CS_None; } if (config.ProtocolChannelName == null || config.ProtocolChannelName.Equals("")) { config.ProtocolChannelName = CS_None; } } base.AddRow(new string[] { "False", item.PortNumber.ToString(), CEnumHelper.SerialTransTypeToUIStr(item.TransType), config.ProtocolChannelName, config.ProtocolDataName, item.Baudrate.ToString(), item.DataBit.ToString(), item.StopBit.ToString(), CEnumHelper.PortParityTypeToUIStr(item.ParityType), CEnumHelper.SerialPortStreamTypeToUIStr(item.Stream), item.Break.Value ? CS_Break_Enabled : CS_Break_Disabled, item.SwitchSatus.Value ? CS_SwitchStatus_Open : CS_SwitchStatus_Close, "1", item.PortNumber.ToString() }, EDataState.ENormal); iActualPortCount += 1; } UpdatePortsCount(iActualPortCount); if (!strMessageInfo.Equals("")) { MessageBox.Show(strMessageInfo); if (_bDoDelete) { m_porxy.DeleteRange(_listDoDelete); // 通知其他界面更新消息 CDBDataMgr.Instance.UpdateAllSerialPort(); } } }