From ff6ef4c5e76c6dac640994f9d537b8a8475167e5 Mon Sep 17 00:00:00 2001 From: shenlefengnai-rgb Date: Sat, 3 Oct 2026 16:51:40 +0800 Subject: [PATCH] Add printable AMI CAN protocol PDF and export script --- README.md | 13 +++ output/pdf/AMI_CAN报文说明.pdf | Bin 0 -> 96078 bytes scripts/export_can_pdf.py | 147 +++++++++++++++++++++++++++++++++ scripts/requirements-pdf.txt | 1 + 4 files changed, 161 insertions(+) create mode 100644 output/pdf/AMI_CAN报文说明.pdf create mode 100644 scripts/export_can_pdf.py create mode 100644 scripts/requirements-pdf.txt diff --git a/README.md b/README.md index 1c722cd..1100cb3 100644 --- a/README.md +++ b/README.md @@ -10,6 +10,7 @@ dash 顶部已加入低压电池电压 `lvbat`(两位小数),来源是 SDC - [AMI.dbc](AMI.dbc):当前 AMI CAN 接口,10 条报文、33 个信号,含标准/扩展帧。 - [DBC 对应说明](docs/AMI_CAN_DBC说明.md):信号布局、枚举、字节序、样例与复现检查。 +- [CAN 报文说明 PDF](output/pdf/AMI_CAN报文说明.pdf):当前 v2.0 协议的中文打印版,包含全部 10 条报文。 - [联调报告](docs/SDC_BMS联调报告.md):真实 CAN1 / MCU / COM4 到 HMI 调试器的证据。 - [已联调固件 BIN](output/firmware/AMI_Controller.bin):STM32G0B1CBT6,配套源码在 firmware。 - [AMI.HMI](AMI.HMI):最新版屏幕工程,打开后编译并下载到对应型号屏幕。 @@ -54,3 +55,15 @@ dash.lvbat.val=1260 灰色数值表示未知或失效。现有资料缺少电机/逆变器温度协议、Hz 到 km/h 标定参数、SDC PD0..PD14 到具名安全信号的映射,对应显示保持无效/未知。VCU 任务裁决、执行反馈和 EBS 安全输出仍需车辆控制协议,画面 EBS 文案不能作为安全状态证明。 许可证沿用仓库中的 [AGPL-3.0](LICENSE)。 + +## 导出 CAN 报文 PDF + +PDF 与 `docs/AMI_CAN_DBC说明.md` 使用同一份内容,按 A4 横向排版并嵌入中文字体。在仓库根目录运行: + +```powershell +python -m pip install -r scripts/requirements-pdf.txt +python scripts/export_dbc_docs.py +python scripts/export_can_pdf.py +``` + +默认使用 Windows 黑体 `C:/Windows/Fonts/simhei.ttf`;其他环境可通过 `--font` 指定支持中文的 TrueType 字体。输出为 `output/pdf/AMI_CAN报文说明.pdf`。修改 DBC 后,需重新导出 Markdown 和 PDF。 diff --git a/output/pdf/AMI_CAN报文说明.pdf b/output/pdf/AMI_CAN报文说明.pdf new file mode 100644 index 0000000000000000000000000000000000000000..9ca93e530eee3902ef65b22f3d03351061a13ace GIT binary patch literal 96078 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

BckdCP}h=U9rmIu)9zw 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 literal 0 HcmV?d00001 diff --git a/scripts/export_can_pdf.py b/scripts/export_can_pdf.py new file mode 100644 index 0000000..3cd91f0 --- /dev/null +++ b/scripts/export_can_pdf.py @@ -0,0 +1,147 @@ +"""Render the verified Chinese CAN Markdown document as a printable PDF.""" +import argparse +import html +import re +from pathlib import Path + +from reportlab.lib import colors +from reportlab.lib.enums import TA_LEFT +from reportlab.lib.pagesizes import A4, landscape +from reportlab.lib.styles import ParagraphStyle +from reportlab.pdfbase import pdfmetrics +from reportlab.pdfbase.ttfonts import TTFont +from reportlab.platypus import ( + KeepTogether, PageBreak, Paragraph, SimpleDocTemplate, Spacer, Table, TableStyle, +) + +ROOT = Path(__file__).resolve().parents[1] +SOURCE = ROOT / 'docs/AMI_CAN_DBC说明.md' +OUTPUT = ROOT / 'output/pdf/AMI_CAN报文说明.pdf' +REMOTE = 'https://git.acetaffy.ltd/acetaffy/AMI/src/branch/main/' + + +def inline(text): + """Escape Markdown and retain useful links in the printed document.""" + text = html.escape(text) + text = re.sub(r'`([^`]+)`', r'\1', text) + + def link(match): + label, target = match.groups() + if not target.startswith(('http://', 'https://')): + target = REMOTE + ('AMI.dbc' if target == '../AMI.dbc' else 'docs/' + target) + return f'{label}' + + return re.sub(r'\[([^\]]+)\]\(([^)]+)\)', link, text) + + +def export(font_path): + pdfmetrics.registerFont(TTFont('AMIChinese', str(font_path), subfontIndex=0)) + page_width, page_height = landscape(A4) + width = page_width - 80 + body = ParagraphStyle('Body', fontName='AMIChinese', fontSize=9.3, + leading=15, spaceAfter=8, wordWrap='CJK', alignment=TA_LEFT) + heading = ParagraphStyle('Heading', parent=body, fontSize=16, leading=23, + textColor=colors.HexColor('#12485E'), spaceBefore=3, + spaceAfter=12, keepWithNext=True) + subheading = ParagraphStyle('Subheading', parent=body, fontSize=11, + leading=17, textColor=colors.HexColor('#12485E'), + spaceBefore=8, spaceAfter=6, keepWithNext=True) + title = ParagraphStyle('Title', parent=heading, fontSize=25, leading=32) + cell = ParagraphStyle('Cell', parent=body, fontSize=8.5, leading=12, spaceAfter=0) + code = ParagraphStyle('Code', parent=body, fontSize=8, leading=13, + backColor=colors.HexColor('#F2F5F7'), borderPadding=8) + lines = SOURCE.read_text(encoding='utf-8').splitlines() + story = [] + i = 0 + while i < len(lines): + line = lines[i] + if not line.strip(): + i += 1 + continue + if line.startswith('# '): + story.append(Paragraph('AMI CAN 报文说明', title)) + elif line.startswith('## '): + section = line[3:] + if section != '使用范围': + story.append(PageBreak()) + story.append(Paragraph(inline(section), heading)) + elif line.startswith('### '): + story.append(Paragraph(inline(line[4:]), subheading)) + elif line.startswith('|'): + rows = [] + while i < len(lines) and lines[i].startswith('|'): + row = [x.strip() for x in lines[i].strip().strip('|').split('|')] + if not all(re.fullmatch(r':?-+:?', x) for x in row): + rows.append([Paragraph(inline(x), cell) for x in row]) + i += 1 + count = len(rows[0]) + proportions = { + 2: [0.15, 0.85], + 3: [0.17, 0.40, 0.43], + 6: [0.11, 0.055, 0.04, 0.28, 0.365, 0.15], + 8: [0.32, 0.055, 0.055, 0.10, 0.09, 0.08, 0.06, 0.24], + }[count] + total = sum(proportions) + table = Table(rows, colWidths=[width*x/total for x in proportions], + repeatRows=1, hAlign='LEFT') + table.setStyle(TableStyle([ + ('BACKGROUND', (0, 0), (-1, 0), colors.HexColor('#DDECF2')), + ('ROWBACKGROUNDS', (0, 1), (-1, -1), + [colors.white, colors.HexColor('#F5F8FA')]), + ('LINEBELOW', (0, 0), (-1, 0), 0.8, colors.HexColor('#7DABB9')), + ('LINEBELOW', (0, 1), (-1, -1), 0.3, colors.HexColor('#D7E0E5')), + ('VALIGN', (0, 0), (-1, -1), 'TOP'), + ('LEFTPADDING', (0, 0), (-1, -1), 7), + ('RIGHTPADDING', (0, 0), (-1, -1), 7), + ('TOPPADDING', (0, 0), (-1, -1), 6), + ('BOTTOMPADDING', (0, 0), (-1, -1), 6), + ])) + if i+1 < len(lines) and not lines[i].strip() and lines[i+1].startswith('`'): + group = [table, Spacer(1, 10), Paragraph(inline(lines[i+1]), body)] + if story and isinstance(story[-1], Paragraph) and story[-1].style is subheading: + group.insert(0, story.pop()) + story.append(KeepTogether(group)) + i += 2 + else: + story.extend([table, Spacer(1, 10)]) + continue + elif line.startswith('```'): + block = [] + i += 1 + while i < len(lines) and not lines[i].startswith('```'): + block.append(html.escape(lines[i])) + i += 1 + story.append(KeepTogether([Paragraph('
'.join(block), code)])) + else: + paragraph = [line] + while i+1 < len(lines) and lines[i+1].strip() and not lines[i+1].startswith(('#', '|', '```')): + i += 1 + paragraph.append(lines[i]) + story.append(Paragraph(inline(' '.join(paragraph)), body)) + i += 1 + + def footer(canvas, doc): + canvas.saveState() + canvas.setStrokeColor(colors.HexColor('#C4D8E1')) + canvas.line(40, 31, page_width-40, 31) + canvas.setFont('AMIChinese', 8) + canvas.setFillColor(colors.HexColor('#506775')) + canvas.drawString(40, 19, 'AMI-2.0 | 2026-10-03 | CAN 接口说明') + canvas.drawRightString(page_width-40, 19, f'{doc.page}') + canvas.restoreState() + + OUTPUT.parent.mkdir(parents=True, exist_ok=True) + document = SimpleDocTemplate(str(OUTPUT), pagesize=landscape(A4), + leftMargin=40, rightMargin=40, + topMargin=36, bottomMargin=44, + title='AMI CAN 报文说明', author='AMI / YMR', + subject='AMI CAN DBC v2.0: SDC, BMS and task requests') + document.build(story, onFirstPage=footer, onLaterPages=footer) + print(OUTPUT) + + +if __name__ == '__main__': + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument('--font', type=Path, default=Path('C:/Windows/Fonts/simhei.ttf'), + help='CJK TrueType font path (default: Windows SimHei)') + export(parser.parse_args().font) diff --git a/scripts/requirements-pdf.txt b/scripts/requirements-pdf.txt new file mode 100644 index 0000000..b1df017 --- /dev/null +++ b/scripts/requirements-pdf.txt @@ -0,0 +1 @@ +reportlab==5.0.1