# seproject **Repository Path**: yokellan/seproject ## Basic Information - **Project Name**: seproject - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-10-09 - **Last Updated**: 2026-10-09 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # seproject —— 软件工程实验一:个人编程技能和 git 操作 本仓库是《软件工程》课程实验一的代码仓库,存放实验的源代码。 * 仓库地址: * 实验任务: ## 一、实验内容 1. **git 基本操作**:注册 Gitee 账号并创建公开仓库,掌握 `clone / add / commit / push` 等基本操作; 2. **编程基本功练习** * (1)`hello_world`:使用 Python 编写程序输出 “Hello World”; * (2)`hj212_parser`:解析 HJ212-2017 环保协议报文的 Python 类库,实现报文格式合法性验证、 ANSI CRC16 校验、数据段的结构化解析,以及监测因子等核心数据的提取。 ## 二、目录结构 ~~~ seproject/ ├── hello_world/ # 练习(1)HelloWorld │ ├── __init__.py │ └── hello_world.py ├── hj212_parser/ # 练习(2)HJ212-2017 报文解析类库 │ ├── __init__.py │ ├── hj212_parser.py # 解析器核心实现 │ └── __main__.py # 命令行入口 ├── tests/ # 单元测试用例 │ ├── __init__.py │ └── test_hj212_parser.py ├── .gitignore └── README.md ~~~ ## 三、运行环境 Python 3.8 及以上(开发环境为 Python 3.13)。本类库只依赖 Python 标准库,无需安装第三方包。 ## 四、运行方式 HelloWorld: ~~~bash python hello_world/hello_world.py # Hello World ~~~ 命令行解析示例报文: ~~~bash python -m hj212_parser --demo python -m hj212_parser --demo --json ~~~ 由数据段构造完整报文(自动计算长度与 CRC): ~~~bash python -m hj212_parser --build "QN=...;ST=91;CN=9012;PW=123456;MN=sss;Flag=5;CP=&&ExeRtn=1&&" ~~~ 运行单元测试: ~~~bash python -m unittest discover -s tests -v ~~~ ## 五、HJ212Parser 用法 ~~~python from hj212_parser import HJ212Parser parser = HJ212Parser() parser.is_valid_message(message) # 报文格式合法性验证 parser.validate_crc(message) # ANSI CRC16 校验 parser.parse_data_segment(message) # 数据段结构化解析,返回键值对字典 parser.extract_monitoring_data(message) # 从 CP 字段提取监测因子及其数值 ~~~ ## 六、协议要点 ~~~ ## + 数据段长度(4位) + 数据段 + CRC校验码(4位) + ~~~ * CRC16 初值为 0xFFFF、多项式为 0xA001,计算范围是数据段本身,结果为 4 位大写十六进制字符串; * 标准校验值:`crc16_ansi("123456789") == 0x4B37`; * 采用 256 项查表法实现,并保留一份逐位实现用于相互印证。 ## 七、提交规范 提交信息遵循 Angular Git Commit Guidelines,格式为 `(): `, 常用 type:`feat / fix / docs / style / refactor / perf / test / chore`。