private void GenAddressTypeList() { _addressList = new List <ModbusAddressType>(); foreach (Tag tag in Tags.Values) { if (tag.AccessType == TagAccessType.Read || tag.AccessType == TagAccessType.ReadWrite) { ModbusAddressType _address = ModbusTCPMasterDriver.GetAddressType(tag.Address); //if (_address!=ModbusAddressType.WC&&_address!=ModbusAddressType.WR&&!_addressList.Contains(_address)) if (_address == ModbusAddressType.IC) { if (!_addressList.Contains(ModbusAddressType.IC)) { _addressList.Add(_address); } } else { LOG.Error(string.Format("ModbusTCPDataSource-GenAddressTypeList出错:不支持{0}类型", tag.Address)); } } } }
//private void AddModbusItem(string Name, Int16 Address) //{ //} //public void AsyncReadAllData() //{ // Thread checkThread = new Thread(SyncReadAllData); // checkThread.Start(); //} public void SyncReadAllData(ModbusAddressType address) { try { //LOG.Info("ModbusTCP_Driver"); if (!_connected) { return; } // Read from device to Buffer //_inputStatus = _master.ReadInputs(InputStatusStartAddress, InputStatusSize); //if (InputRegisterSize > 0) //{ // _inputRegister = _master.ReadInputRegisters(InputRegisterStartAddress, InputRegisterSize); //} if (address == ModbusAddressType.IC) { if (InputStatusSize > 0) { _inputStatus = _master.ReadCoils(InputStatusStartAddress, InputStatusSize); } } else { LOG.Error(string.Format("读取ModbusTCPDriver数据出错:不支持{0}类型", address.ToString())); return; } // Notification ModbusTCPDataUpdatedEventArgs Evargs = new ModbusTCPDataUpdatedEventArgs(); DataArrivalEvent(this, Evargs); } catch (Exception ex) { _connected = false; LOG.Error(string.Format("读取ModbusTCPDriver数据出错:{0}", ex.Message)); } }