/* Версия функции, предназначенная в первую очередь для LabView, так как LabView медленно работает * со структурами C#, то сделан вариант, где все поля доп. информации передаются отдельным массивом */ public _LTRNative.LTRERROR ProcessData(uint[] src, double[] dest, ref int size, ProcFlags flags, out FRAME_STATUS frame_status, byte[] digBits, byte[] ch, AdcRanges[] range) { uint[] info = new uint[size]; _LTRNative.LTRERROR err = LTR210_ProcessData(ref hnd, src, dest, ref size, flags, out frame_status, info); if (err == _LTRNative.LTRERROR.OK) { for (int i = 0; i < size; i++) { DATA_INFO cur_info = new DATA_INFO(info[i]); if (digBits.Length > i) { digBits[i] = (byte)(cur_info.DigBitState & 1); } if (ch.Length > i) { ch[i] = cur_info.Ch; } if (range.Length > i) { range[i] = cur_info.Range; } } } return(err); }
public static void InsertRow(SQLiteConnection connection, DATA_INFO db) { string _HandleP = string.Join(",", db.HandleP); string _SaddleP = string.Join(",", db.SaddleP); string _PedalLeftP = string.Join(",", db.PedalLeftP); string _PedalLeftAcc = string.Join(",", db.PedalLeftAcc); string _PeadlLeftGyro = string.Join(",", db.PeadlLeftGyro); string _PeadlRightP = string.Join(",", db.PeadlRightP); string _PedalRightAcc = string.Join(",", db.PedalRightAcc); string _PeadlRightGyro = string.Join(",", db.PeadlRightGyro); string _CrankAcc = string.Join(",", db.CrankAcc); string _CrankGyro = string.Join(",", db.CrankGyro); string sql = string.Format("INSERT INTO [itec] (" + "[ID], [EventType], [EventTime], [Cadence], [Power], [Resistance], " + "[HandleP], [SaddleP], [PedalLeftP], [PedalLeftAcc], [PeadlLeftGyro], " + "[PeadlRightP], [PedalRightAcc], [PeadlRightGyro], [CrankAcc], " + "[CrankGyro]) " + "VALUES (" + "'{0}','{1}','{2}',{3},{4},{5}," + "'{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}'," + "'{14}','{15}')", db.ID, db.EventType, db.EventTime, db.Cadence, db.Power, db.Resistance, _HandleP, _SaddleP, _PedalLeftP, _PedalLeftAcc, _PeadlLeftGyro, _PeadlRightP, _PedalRightAcc, _PeadlRightGyro, _CrankAcc, _CrankGyro ); using (ISQLiteStatement sqliteStatement = connection.Prepare(sql)) { sqliteStatement.Step(); } }
public _LTRNative.LTRERROR ProcessData(uint[] src, double[] dest, ref int size, ProcFlags flags, out FRAME_STATUS frame_status, DATA_INFO[] data_info) { /* напрямую нельзя передать массив структур. нужно либо через спец. методы маршалинга, либо через * эквивалентный массив 32-битных слов, как сделано тут */ uint[] info = new uint[size]; _LTRNative.LTRERROR err = LTR210_ProcessData(ref hnd, src, dest, ref size, flags, out frame_status, info); if (err == _LTRNative.LTRERROR.OK) { for (int i = 0; i < size; i++) { if (data_info.Length > i) { data_info[i] = new DATA_INFO(info[i]); } } } return(err); }