コード例 #1
0
        private void                read(DataItem aItem)
        {
            if (aItem.SegID < 0)
            {
                aItem.read(mClient);
            }
            else
            {
                if (mSegActual[aItem.SegID] == false)
                {
                    int lResult = readSegment(aItem.SegID, aItem.mMemoryType, aItem.DB);
                    if (lResult != 0)
                    {
                        reportError("Error reading data for group of Items: " + mClient.ErrorText(lResult));
                        return;
                    }

                    mSegActual[aItem.SegID] = true;
                }

                if (mSegActual[aItem.SegID])
                {
                    var lValue = new byte[aItem.SegLength];
                    int lIndex = aItem.SegAddress - mSegStart[aItem.SegID];

                    if (aItem.DataType == EWordlen.S7_Bit)
                    {
                        if ((mSegBuffer[aItem.SegID][lIndex] & (1 << aItem.Bit)) != 0)
                        {
                            lValue[0] = 1;
                        }
                        else
                        {
                            lValue[0] = 0;
                        }
                    }
                    else
                    {
                        Array.Copy(mSegBuffer[aItem.SegID], lIndex, lValue, 0, lValue.Length);
                    }

                    aItem.setValueFromPLC(lValue);
                }
            }
        }
コード例 #2
0
        private void                    read(DataItem aItem)
        {
            if (aItem.mGroup == 0)
            {
                aItem.read(mClient);
            }
            else
            {
                GroupDescriptor lGroupDsc = mGroups[aItem.mGroup - 1];
                if (lGroupDsc.mActual == false)
                {
                    int lResult = mClient.ReadArea((int)aItem.mMemoryType, aItem.DB, lGroupDsc.mStart, lGroupDsc.mBuffer.Length, (int)EWordlen.S7_Byte, lGroupDsc.mBuffer);
                    if (lResult != 0)
                    {
                        reportError("Error reading data for group of Items: " + mClient.ErrorText(lResult));
                        return;
                    }

                    lGroupDsc.mActual = true;
                }

                byte[] lValue = new byte[aItem.BufferLength];
                int    lIndex = aItem.Byte - lGroupDsc.mStart;
                if (aItem.DataType == EWordlen.S7_Bit)
                {
                    if ((lGroupDsc.mBuffer[lIndex] & (1 << aItem.Bit)) != 0)
                    {
                        lValue[0] = 1;
                    }
                    else
                    {
                        lValue[0] = 0;
                    }
                }
                else
                {
                    Array.Copy(lGroupDsc.mBuffer, lIndex, lValue, 0, lValue.Length);
                }
                aItem.setValueFromPLC(lValue);
            }
        }