private void VibDataUpLoad(IntPtr intPtr) { try { HiComClient.VibrationData vibrationData = Marshal.PtrToStructure<HiComClient.VibrationData>(intPtr); Model.VibrationData vibrationData1 = new Model.VibrationData(); DateTime date = ConvertDateTime.ConvertIntDateTime(vibrationData.collectTime); vibrationData1.DateTime = date.ToString("yyyyMMddHHmmssffff"); vibrationData1.Vibration1 = Math.Round(vibrationData.shake1, 2); vibrationData1.Vibration2 = Math.Round(vibrationData.shake2, 2); vibrationData1.Vibration3 = Math.Round(vibrationData.shake3, 2); string insertDataSql = $"insert into new_schema.{DeviceInfoModel.MacNumber}_vibration_data (datetime,X,Y,Z) values ({vibrationData1.DateTime},{vibrationData1.Vibration1},{vibrationData1.Vibration2},{vibrationData1.Vibration3})"; Progress++; MySqlConnect.GetInstance().ExecuteSql(insertDataSql); LastTime = DateTime.Now; recordNum.Remove((int)(vibrationData.uid - tmpPolMinNumber)); } catch (Exception ex) { LogHelper.Error(ex.Message); } }翻译这段代码
时间: 2024-04-29 12:20:32 浏览: 8
这段代码是一个C#方法,名为`VibDataUpLoad`,包含一个参数`IntPtr intPtr`。该方法主要用于处理振动数据上传的逻辑,处理完成后将数据插入到数据库中。
方法的具体实现如下:
1. 将`IntPtr`类型的指针`intPtr`转换为结构体`HiComClient.VibrationData`对象,使用`Marshal.PtrToStructure`方法实现。
2. 根据`HiComClient.VibrationData`对象的字段,构造一个`Model.VibrationData`对象,并对其进行赋值。
3. 将`collectTime`字段转换为`DateTime`类型,并格式化为`yyyyMMddHHmmssffff`格式的字符串,赋值给`DateTime`字段。
4. 将`shake1`、`shake2`和`shake3`字段的值分别保留两位小数,赋值给`Vibration1`、`Vibration2`和`Vibration3`字段。
5. 使用构造好的`Model.VibrationData`对象中的数据,构造`insertDataSql`字符串,用于将数据插入到数据库中。
6. 执行`MySqlConnect.GetInstance().ExecuteSql(insertDataSql)`方法,将数据插入到数据库中。
7. 记录当前时间,赋值给`LastTime`变量,用于后续的计算和操作。
8. 从`recordNum`列表中移除指定元素,使用`(int)(vibrationData.uid - tmpPolMinNumber)`计算要移除的元素下标。
9. 如果在执行过程中出现异常,将异常信息写入日志。