public CASubArrayRecord <TArrayElement> CreateSubArrayRecord <TArrayElement>(string name, CAArrayRecord <TArrayElement> arrayRecord) where TArrayElement : IComparable { var result = new CASubArrayRecord <TArrayElement>(arrayRecord.Value) { Name = name, }; records.Add(result); return(result); }
public void Initialize() { Server = new CAServer(IPAddress.Parse("127.0.0.1")); Client = new CAClient(); Client.Configuration.SearchAddress = "127.0.0.1"; Client.Configuration.WaitTimeout = TIMEOUT; var countChange = new AutoResetEvent(false); long count = 3; IntArrayRecord = Server.CreateArrayRecord <CAIntArrayRecord>(IntArrayChannelName, 20); IntSubArrayRecord = Server.CreateSubArrayRecord(IntSubArrayChannelName, IntArrayRecord); for (var i = 0; i < IntArrayRecord.Value.Length; i++) { IntArrayRecord.Value[i] = i; } FloatSubArrayRecord = Server.CreateSubArrayRecord <CAFloatSubArrayRecord>(FloatSubArrayChannelName, 10); for (byte i = 0; i < FloatSubArrayRecord.FullArray.Length; i++) { FloatSubArrayRecord.FullArray[i] = i; } ByteSubArrayRecord = Server.CreateSubArrayRecord <CAByteSubArrayRecord>(ByteSubArrayChannelName, 35); var str = "Hello world"; var bytes = Encoding.ASCII.GetBytes(str); for (byte i = 0; i < bytes.Length; i++) { ByteSubArrayRecord.FullArray[i] = bytes[i]; } ByteSubArrayRecord.Scan = Constants.ScanAlgorithm.HZ10; void ProcessedHandler(object obj, EventArgs args) { Interlocked.Decrement(ref count); countChange.Set(); }; IntArrayRecord.RecordProcessed += ProcessedHandler; FloatSubArrayRecord.RecordProcessed += ProcessedHandler; ByteSubArrayRecord.RecordProcessed += ProcessedHandler; while (Interlocked.Read(ref count) > 0) { if (!countChange.WaitOne(TIMEOUT)) { Server.Dispose(); throw new Exception("Timed out"); } } Server.Start(); }