public void Parse(ushort[] src, int startIndex, int count) { //ClearRegs(); if ((src == null) || (src.Length <= 0)) { return; } ushort[] buf = ValueUtil.StructToBuff <ushort, common.devices.USM.MbUsmRegisters>(USM_Reg); int end = startIndex + count; for (int i = startIndex; i < end; i++) { if (i >= buf.Length) { break; } if (i >= src.Length) { break; } buf[i] = src[i]; } USM_Reg = ValueUtil.BufToStruct <common.devices.USM.MbUsmRegisters, ushort>(buf); }
bool ModbusUpdate() { try { lock (m_syncObject) { //for (int i = 0; i < 1281; i += 125) //{ ///*rdBuf*/ = m_mbMaster.ReadHoldingRegisters(m_slaveAddr, m_startAddr, m_count); //for (int j = 0; j < 126; j++) //{ // if (i + j < 1281) // { // //MyClass.rxData[i + j] = rdBuf[j]; // } //} int count = RegistersCountMax; ushort addr = m_startAddr; int rdLen; int index = 0; if (rdBuf == null) { rdBuf = new ushort[RegistersCountMax]; } while (count > 0) { rdLen = count; if (rdLen > IOCountMax) { rdLen = IOCountMax; } ushort[] tBuf = m_mbMaster.ReadHoldingRegisters(m_slaveAddr, (ushort)index, (ushort)rdLen); // ushort[] tBuf = m_mbMaster.ReadHoldingRegisters(1, 1, 5); Array.Copy(tBuf, 0, rdBuf, index, rdLen); index += rdLen; addr += (ushort)rdLen; count -= rdLen; // ushort[] buf = ValueUtil.StructToBuff<ushort, RegistersData.MbRegisters>(USM_Reg); //GetVals(tBuf); } USM_Reg = ValueUtil.BufToStruct <common.devices.USM.MbUsmRegisters, ushort>(rdBuf); //} //rdBuf[280] = 1; } return(true); } catch (Exception ex) { m_lastError = ex.Message; return(false); } }