Chronaxis用户手册English
本页目录

chronaxis.planning.channels

源码基线:8904c2f744951857659abd40aaa3535d57faf53c

1"""把用户配置的 CAN 通道转换为内部编号,不读取报文或修改原始数据。23公共配置统一从1开始,底层模型从0开始。只在构造模型前调用;配置展开、4序列化与路径解析保留公共编号,避免往返时反复减1。CSV文件列的channel_origin5描述原始文件格式,不经过此转换。6"""7import re89from .checks import PlanValidationError101112def channel_index(value, path, *, key=False):13    """校验公共通道并返回0基编号。1415    参数: value为从1开始的整数;key=True时为无前导零的正整数十进制字符串;16    path为出错时显示的配置位置。省略通道时由调用方先确定来源的唯一通道,17    本函数不把None解释为省略。18    返回: int,用户配置的通道1转换为内部编号0。19    异常: PlanValidationError,值的类型或取值不符合上述规则,或文本整数超过解析能力。20    """21    # 映射键不能靠int接受空格、符号、前导零或其他进制;bool也不是通道整数。22    if key:23        if type(value) is not str or re.fullmatch(r'[1-9][0-9]*', value) is None:24            raise PlanValidationError(path, '配置CAN通道从1开始,DBC通道键须为无前导零的正整数文本',25                hint='按采集通道编号填写无前导零的正整数文本;第一路写字符串"1",原始文件中的通道列保持原样')26        try:27            value = int(value)28        except ValueError as error:29            raise PlanValidationError(path, '通道键超过当前整数能力') from error30    elif type(value) is not int or value < 1:31        raise PlanValidationError(path, '配置CAN通道须为从1开始的整数',32            hint='填写从1开始的整数,第一路写1;省略时采用所选来源的唯一通道')33    return value - 134
Chronaxis 用户手册 · 离线阅读