OSDN Git Service

MathExクラスの追加,誤差関数の実装(#23869)
[karinto/karinto.git] / Karinto / HiokiHicorderData.cs
index 5a55145..c8d3850 100755 (executable)
@@ -15,6 +15,7 @@ namespace Karinto
 {\r
     public class HiokiHicorderData\r
     {\r
+        #region type definitions\r
         [Flags]\r
         public enum Channels\r
         { \r
@@ -36,10 +37,20 @@ namespace Karinto
             Ch16 = 1 << 15,\r
         }\r
 \r
+        #endregion\r
+        #region fields\r
+        private const int MaxUnitNumber = 8;\r
+        private const int MaxChannelNumber = 64;\r
+        #endregion\r
+\r
+        #region constructors\r
         public HiokiHicorderData()\r
         {\r
-            ChannelData = new AnalogChannel[16 + 1];\r
+            Units = new AnalogChannel[MaxUnitNumber + 1][];\r
+            ChannelData = new List<AnalogChannel>(MaxChannelNumber);\r
+            Z = new List<AnalogChannel>();\r
         }\r
+        #endregion\r
 \r
         public Settings Settings\r
         {\r
@@ -47,29 +58,72 @@ namespace Karinto
             set;\r
         }\r
 \r
+        public AnalogChannel[][] Units\r
+        {\r
+            get;\r
+            private set;\r
+        }\r
+\r
 \r
-        public AnalogChannel[] ChannelData\r
+        public List<AnalogChannel> ChannelData\r
         {\r
             get;\r
-            set;\r
+            private set;\r
         }\r
 \r
-        public AnalogChannel Ch1 { get { return ChannelData[1]; } }\r
-        public AnalogChannel Ch2 { get { return ChannelData[2]; } }\r
-        public AnalogChannel Ch3 { get { return ChannelData[3]; } }\r
-        public AnalogChannel Ch4 { get { return ChannelData[4]; } }\r
-        public AnalogChannel Ch5 { get { return ChannelData[5]; } }\r
-        public AnalogChannel Ch6 { get { return ChannelData[6]; } }\r
-        public AnalogChannel Ch7 { get { return ChannelData[7]; } }\r
-        public AnalogChannel Ch8 { get { return ChannelData[8]; } }\r
-        public AnalogChannel Ch9 { get { return ChannelData[9]; } }\r
-        public AnalogChannel Ch10 { get { return ChannelData[10]; } }\r
-        public AnalogChannel Ch11 { get { return ChannelData[11]; } }\r
-        public AnalogChannel Ch12 { get { return ChannelData[12]; } }\r
-        public AnalogChannel Ch13 { get { return ChannelData[13]; } }\r
-        public AnalogChannel Ch14 { get { return ChannelData[14]; } }\r
-        public AnalogChannel Ch15 { get { return ChannelData[15]; } }\r
-        public AnalogChannel Ch16 { get { return ChannelData[16]; } }\r
+        public List<AnalogChannel> Z\r
+        {\r
+            get;\r
+            private set;\r
+        }\r
 \r
+        public AnalogChannel Ch1 { get { return Units[0][1]; } }\r
+        public AnalogChannel Ch2 { get { return Units[0][2]; } }\r
+        public AnalogChannel Ch3 { get { return Units[0][3]; } }\r
+        public AnalogChannel Ch4 { get { return Units[0][4]; } }\r
+        public AnalogChannel Ch5 { get { return Units[0][5]; } }\r
+        public AnalogChannel Ch6 { get { return Units[0][6]; } }\r
+        public AnalogChannel Ch7 { get { return Units[0][7]; } }\r
+        public AnalogChannel Ch8 { get { return Units[0][8]; } }\r
+        public AnalogChannel Ch9 { get { return Units[0][9]; } }\r
+        public AnalogChannel Ch10 { get { return Units[0][10]; } }\r
+        public AnalogChannel Ch11 { get { return Units[0][11]; } }\r
+        public AnalogChannel Ch12 { get { return Units[0][12]; } }\r
+        public AnalogChannel Ch13 { get { return Units[0][13]; } }\r
+        public AnalogChannel Ch14 { get { return Units[0][14]; } }\r
+        public AnalogChannel Ch15 { get { return Units[0][15]; } }\r
+        public AnalogChannel Ch16 { get { return Units[0][16]; } }\r
+\r
+        public void SetAnalogChannel(int channel, AnalogChannel data)\r
+        {\r
+            SetAnalogChannel(channel / 100, channel % 100, data);\r
+        }\r
+\r
+        public void SetAnalogChannel(int unit, int channel, AnalogChannel data)\r
+        {\r
+            if (channel > MaxChannelNumber)\r
+            {\r
+                return;\r
+            }\r
+            if (Units[unit] == null)\r
+            {\r
+                Units[unit] = new AnalogChannel[MaxChannelNumber + 1];\r
+            }\r
+            Units[unit][channel] = data;\r
+        }\r
+\r
+        public AnalogChannel GetAnalogChannel(int channel)\r
+        {\r
+            return GetAnalogChannel(channel / 100, channel % 100);\r
+        }\r
+\r
+        public AnalogChannel GetAnalogChannel(int unit, int channel)\r
+        {\r
+            if (Units[unit] == null)\r
+            {\r
+                return null;\r
+            }\r
+            return Units[unit][channel];\r
+        }\r
     }\r
 }\r