# 软件工程 **Repository Path**: chenlllin/software-engineering ## Basic Information - **Project Name**: 软件工程 - **Description**: 软件工程课程实验代码 - **Primary Language**: Unknown - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-10-08 - **Last Updated**: 2026-10-09 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 软件工程实验一:个人编程技能和 git 操作 > 学号-姓名:`202410120427-陈麟` > 实验报告命名:`202410120427-陈麟-软件工程实验一` ## 目录结构 ``` se-lab1/ ├── helloworld.py # 实验内容 (1):输出 "Hello World" ├── hj212_parser.py # 实验内容 (2):HJ212-2017 报文解析类库 ├── test_hj212.py # HJ212Parser 的测试 / 演示脚本 └── README.md # 本说明文档 ``` ## 一、实验内容说明 ### 1. git 基本操作(见下文「五、提交到 git 仓库」) ### 2. 编程基本功练习 #### (1) HelloWorld ```bash python helloworld.py # 输出:Hello World ``` #### (2) HJ212-2017 环保协议报文解析类库 `HJ212Parser` `hj212_parser.py` 中的 `HJ212Parser` 类实现四大核心功能: | 方法 | 功能 | | --- | --- | | `is_valid_message(message)` | 报文格式合法性验证 | | `validate_crc(message)` | ANSI CRC16 校验 | | `parse_data_segment(message)` | 数据段结构化解析,返回键值对字典 | | `extract_monitoring_data(message)` | 从 CP 字段提取监测因子及其数值 | ## 二、HJ212-2017 报文结构 ``` ## + 4位长度 + 数据段 + 4位CRC + \r\n ``` | 组成 | 长度 | 说明 | | --- | --- | --- | | 包头 | 2 | 固定 `##` | | 数据段长度 | 4 | 十进制数字,表示数据段(不含 CRC)的字符数,不足补 0 | | 数据段 | 0~1024 | 若干 `名称=值` 字段,以 `;` 分隔;`CP=&&数据区&&` 为数据区 | | CRC 校验码 | 4 | 16 位 CRC,十六进制,大写、高位在前 | | 包尾 | 2 | 固定 `\r\n` | 数据区(CP)示例: ``` CP=&&DataTime=20160801085800;a34001-Rtd=1.2;a34001-Flag=N;B01-Rtd=5.4;B01-Flag=N&& ``` - `DataTime`:数据时间戳 `YYYYMMDDHHMMSS` - 监测因子:`因子编码-标志=数值`,如 `a34001-Rtd=1.2`(因子 `a34001` 的实时值)、`a34001-Flag=N`(数据标记) - 数据项之间用 `;` 分隔(部分实现用 `,`,本类库两者均兼容) ## 三、CRC16 校验算法(ANSI CRC16) - 初始寄存器:`0xFFFF` - 多项式:`0xA001` - 逐字节处理:`crc = (crc >> 8) ^ byte`,再做 8 次右移,移出的最低位为 1 时与 `0xA001` 异或 已在 `test_hj212.py` 中用 HJ212-2017 官方示例报文验证,CRC 计算值与标准完全一致(`1C80`、`E381`)。 ## 四、运行测试 ```bash # 直接运行 python test_hj212.py # 或使用 pytest(若已安装) pytest test_hj212.py ``` ## 五、提交到 git 仓库 1. **注册账号**:在 [GitHub](https://github.com/) 或 [Gitee](https://gitee.com/) 注册账号。 2. **创建公开仓库**:新建仓库(例如 `software-engineering-lab1`),**务必设为 Public(公开)**,以备老师审阅。 3. **安装配置 git**(若未安装): ```bash git config --global user.name "陈麟" git config --global user.email "你的邮箱" ``` 4. **推送本目录到仓库**: ```bash cd se-lab1 git init git add . git commit -m "feat: 软件工程实验一——HJ212Parser 与 HelloWorld" git branch -M main git remote add origin https://github.com/<你的账号>/<仓库名>.git git push -u origin main ``` > Git 提交注释规范参考:《Git提交注释规范指南》(课程网 p1/898.html)。 ## 六、实验报告要点(实验报告模板见课程网附件) - 实验名称:软件工程实验一——个人编程技能和 git 操作 - 实验时间:填写本实验课上课时间 - 内容应包含: 1. 实验目的、实验环境(操作系统、Python 版本、git 版本) 2. git 安装配置过程、仓库创建与提交截图 3. HelloWorld 运行结果 4. HJ212Parser 的设计说明(报文结构、CRC16 算法、四个方法的实现思路) 5. 测试结果截图 6. 实验总结(**务必独立撰写,雷同或抄袭以零分计**)