168 lines
4.8 KiB
Markdown
168 lines
4.8 KiB
Markdown
# 液体吸收测试报告表格实现总结
|
||
|
||
## 已完成的功能
|
||
|
||
### 1. 表格结构设计
|
||
- **列结构**:1个序号列 + 5个试样(每个试样3列)= 16列
|
||
- 序号列:显示行名称
|
||
- 每个试样包含:
|
||
- 系统读数(黄色背景,只读)
|
||
- 手动输入(白色背景,可编辑)
|
||
- 系统计算(黄色背景,只读)
|
||
|
||
- **行结构**:6行数据
|
||
1. 吸水时间(s)- 从寄存器读取
|
||
2. 吸芯高度(mm)- 手动输入
|
||
3. 芯吸速率(mm/min)- 自动计算
|
||
4. 平均芯吸速率(mm/min)- 自动计算
|
||
5. 标准偏差 - 自动计算
|
||
6. 互检/审核 - 预留填充
|
||
|
||
### 2. 数据处理功能
|
||
|
||
#### 数据读取
|
||
- **吸水时间(s)**:通过 `ReadRegisterData()` 方法从寄存器读取
|
||
- 定时器每秒自动更新一次数据
|
||
- 支持5个试样同时读取
|
||
|
||
#### 手动输入
|
||
- **吸芯高度(mm)**:用户可在"手动输入"列直接编辑
|
||
- 编辑后自动触发重新计算
|
||
|
||
#### 自动计算
|
||
```csharp
|
||
// 芯吸速率计算公式
|
||
芯吸速率 = 吸芯高度(mm) / (吸水时间(s) / 60)
|
||
|
||
// 平均芯吸速率
|
||
平均芯吸速率 = Average(所有试样的芯吸速率)
|
||
|
||
// 标准偏差
|
||
标准偏差 = StdDev(所有试样的芯吸速率)
|
||
```
|
||
|
||
### 3. 界面功能
|
||
|
||
#### 按钮功能
|
||
- **连接设备**:启动/停止从寄存器读取数据
|
||
- **模拟数据**:生成测试数据用于演示
|
||
- **导出**:导出数据到Excel文件
|
||
- **打印**:预留功能
|
||
- **返回**:关闭窗口
|
||
|
||
#### 样式设置
|
||
- 黄色背景:系统自动填充的数据(只读)
|
||
- 白色背景:可手动输入的数据(可编辑)
|
||
- 居中对齐:所有单元格内容
|
||
- 数值格式:保留2位小数
|
||
|
||
### 4. Excel导出功能
|
||
|
||
#### 表头结构
|
||
- 第一行:试样1-5(每个试样合并3列)
|
||
- 第二行:系统读数、手动输入、系统计算
|
||
- 序号列:合并两行
|
||
|
||
#### 样式保持
|
||
- 黄色背景:系统读数和系统计算列
|
||
- 白色背景:手动输入列
|
||
- 边框:所有单元格
|
||
- 居中对齐:所有内容
|
||
|
||
### 5. 数据验证
|
||
|
||
#### 计算逻辑
|
||
- 优先使用系统读数(吸水时间)
|
||
- 优先使用手动输入(吸芯高度)
|
||
- 自动过滤无效数据(值为0的数据)
|
||
- 实时更新计算结果
|
||
|
||
## 代码结构
|
||
|
||
### 主要方法
|
||
|
||
```csharp
|
||
// 初始化
|
||
InitializeDataTable() // 初始化数据表结构
|
||
InitializeDataGridView() // 初始化表格列
|
||
InitializeTimer() // 初始化定时器
|
||
InitializeEventHandlers() // 初始化事件处理
|
||
|
||
// 数据处理
|
||
ReadRegisterData() // 从寄存器读取数据
|
||
GenerateMockData() // 生成模拟数据
|
||
CalculateAllRows() // 计算所有行数据
|
||
CalculateWickingRate() // 计算芯吸速率
|
||
CalculateAverageWickingRate() // 计算平均芯吸速率
|
||
CalculateStandardDeviation() // 计算标准偏差
|
||
|
||
// 界面更新
|
||
UpdateDisplay() // 更新界面显示
|
||
RecalculateRow() // 重新计算指定行
|
||
|
||
// 导出功能
|
||
ExportToExcel() // 导出到Excel
|
||
GenerateReport() // 生成报表
|
||
```
|
||
|
||
### 事件处理
|
||
|
||
```csharp
|
||
DataTimer_Tick() // 定时器事件
|
||
DataGridView1_CellValueChanged() // 单元格值改变事件
|
||
DataGridView1_CellFormatting() // 单元格格式化事件
|
||
Button1_Click() // 连接设备按钮
|
||
Button5_Click() // 模拟数据按钮
|
||
Button3_Click() // 导出按钮
|
||
```
|
||
|
||
## 使用流程
|
||
|
||
1. **启动程序**
|
||
- 自动初始化表格结构
|
||
- 显示6行数据行
|
||
|
||
2. **连接设备**
|
||
- 点击"连接设备"按钮
|
||
- 开始从寄存器读取吸水时间数据
|
||
- 数据显示在"系统读数"列(黄色背景)
|
||
|
||
3. **输入数据**
|
||
- 在"吸芯高度"行的"手动输入"列输入测量值
|
||
- 系统自动计算芯吸速率
|
||
|
||
4. **查看结果**
|
||
- 芯吸速率自动显示在"系统计算"列
|
||
- 平均芯吸速率和标准偏差自动计算
|
||
|
||
5. **导出数据**
|
||
- 点击"导出"按钮
|
||
- 选择保存位置
|
||
- 生成Excel文件
|
||
|
||
## 测试功能
|
||
|
||
### 模拟数据生成
|
||
- 点击"模拟数据"按钮
|
||
- 自动生成:
|
||
- 吸水时间:30-34秒之间的随机值
|
||
- 吸芯高度:50-70mm之间的随机值
|
||
- 自动计算其他数据
|
||
|
||
## 注意事项
|
||
|
||
1. **数据精度**:所有数值保留2位小数
|
||
2. **计算顺序**:先计算芯吸速率,再计算平均值和标准偏差
|
||
3. **数据验证**:自动过滤无效数据(值为0)
|
||
4. **实时更新**:修改手动输入列后立即重新计算
|
||
5. **Excel格式**:导出的Excel文件保持与界面相同的格式
|
||
|
||
## 扩展功能建议
|
||
|
||
1. **数据保存**:添加数据库存储功能
|
||
2. **历史记录**:查看历史测试记录
|
||
3. **打印功能**:完善打印报表功能
|
||
4. **数据校验**:添加数据范围校验
|
||
5. **多语言支持**:支持中英文切换
|
||
6. **图表显示**:添加数据可视化图表
|