def combine_c4(rsu_switch): """ 组合c4命令 :param rsu_switch: 01:打开天线 00:关闭天线 :return: """ data = 'c4' + rsu_switch data_len = CommandSendSet.get_data_len(data) c4 = 'ffff' + data_len + data crc = CommonUtil.crc_jinyi(c4) c4 = c4 + crc return c4
def combine_c2(obuid): """ 忽略交易指令 :param obuid: :return: """ data = 'c2' + obuid data_len = CommandSendSet.get_data_len(data) c1 = 'ffff' + data_len + data crc = CommonUtil.crc_jinyi(c1) c1 = c1 + crc return c1
def combine_cb(auth_mac): """ 组合ca命令 PSAM授权 :param rsu_switch: 01:打开天线 00:关闭天线 :return: """ data = 'cb' + auth_mac data_len = CommandSendSet.get_data_len(data) cb = 'ffff' + data_len + data crc = CommonUtil.crc_jinyi(cb) cb = cb + crc return cb
def combine_ca(): """ 组合ca命令 PSAM授权初始化 :param rsu_switch: 01:打开天线 00:关闭天线 :return: """ data = 'ca' data_len = CommandSendSet.get_data_len(data) ca = 'ffff' + data_len + data crc = CommonUtil.crc_jinyi(ca) ca = ca + crc return ca
def combine_c0(tx_power, pll_channel_id, work_mode): """ 初始化指令。软件在与天线建立网络连接后发送该指令,天线应答B0帧。 :param tx_power: 天线功率级数,值为0~31,值越大表示功率越大,交易距离越远 :param pll_channel_id: 信道号,值为0或1,代表不同的频率信道。相邻的两台天线设置成不同的值,可以防止距离较近的两台天线产生同频干扰影响交易。 :param work_mode: 值为0标识表示正常模式,同一个标签最短20秒交易一次。 值为0x54(字母T的ASCII码)时,为测试模式,开启连续交易测试模式。值为0x45(字母E的ASCII码)时,表示不解密车辆信息,B4帧上传车辆信息密文 :return: """ seconds = hex(int(time.time()))[2:] data = ''.join(['c0', seconds, tx_power, pll_channel_id, work_mode]) data_len = CommandSendSet.get_data_len(data) c0 = 'ffff' + data_len + data crc = CommonUtil.crc_jinyi(c0) c0 = c0 + crc return c0
def combine_c6(obuid, consume_money, purchase_time, station_info, entry_time): """ 组合c6命令: 出口扣费指令 :param obuid: OBU号 :param consume_money: 扣款额,高位在前。单位为分 :param purchase_time: 当前扣费时间。BCD编码格式,yyyyMMddHHmmss 例:20200412201745 :param station_info: 过站信息,不需要可以填充0 :param entry_time: 车辆入场时间。BCD编码格式,yyyyMMddHHmmss :return: """ data = ''.join(['c6', obuid, consume_money, purchase_time, station_info, entry_time]) data_len = CommandSendSet.get_data_len(data) c6 = 'ffff' + data_len + data crc = CommonUtil.crc_jinyi(c6) c6 = c6 + crc return c6
def compute_crc(seq, len_data, data): value_verify = ''.join( [CommandSendSet.stx, CommandSendSet.ver, seq, len_data, data]) crc = CommonUtil.crc_jinyi(value_verify) return crc