コード例 #1
0
        public static async Task<bool> WriteMatrixUshorts(IAppointableMatrix appointableMatrix,
            IDataProvider dataProvider, ushort[] ushortsToWrite)
        {
            var numOfUshortsToSkip = 0;
            var res = true;
            foreach (var memoryVariable in appointableMatrix.MatrixTemplate.MatrixMemoryVariables)
            {
                var sizeOfMemoryVariableInBits = memoryVariable.StartAddressBit +
                                                 appointableMatrix.MatrixTemplate.NumberOfBitsOnEachVariable;
                var numOfUshorts = (ushort) (Math.Ceiling((double) sizeOfMemoryVariableInBits / 16));

                var result = await dataProvider.WriteMultipleRegistersAsync(memoryVariable.StartAddressWord,
                    ushortsToWrite.Skip(numOfUshortsToSkip).Take(numOfUshorts).ToArray(),
                    "Write matrix variable" + appointableMatrix.Name);
                numOfUshortsToSkip += numOfUshorts;
                if (result.IsSuccessful) continue;
                res = false;
                break;
            }

            if (!res) return false;
            //    appointableMatrix.DeviceUshortsValue = ushortsToWrite;
            //   appointableMatrix.ConfigurationItemChangedAction?.Invoke();
            return true;

        }
コード例 #2
0
        public static async Task FillMatrixUshorts(IAppointableMatrix appointableMatrix, IDataProvider dataProvider)
        {

            var matrixUshorts = new List<ushort>();
            foreach (var memoryVariable in appointableMatrix.MatrixTemplate.MatrixMemoryVariables)
            {
                var sizeOfMemoryVariableInBits = memoryVariable.StartAddressBit +
                                                 appointableMatrix.MatrixTemplate.NumberOfBitsOnEachVariable;
                var result = await dataProvider.ReadHoldingResgistersAsync(memoryVariable.StartAddressWord,
                    (ushort) (Math.Ceiling((double) sizeOfMemoryVariableInBits / 16)),
                    "Read matrix variable" + appointableMatrix.Name);
                if (result.IsSuccessful)
                {
                    matrixUshorts.AddRange(result.Result);
                }
                else
                {
                    return;
                }
            }
            //appointableMatrix.DeviceUshortsValue = matrixUshorts.ToArray();

        }
コード例 #3
0
 public Result VisitMatrix(IAppointableMatrix appointableMatrixViewModel)
 {
     throw new System.NotImplementedException();
 }
コード例 #4
0
 public IEditorConfigurationItemViewModel VisitMatrix(IAppointableMatrix appointableMatrixViewModel)
 {
     throw new System.NotImplementedException();
 }