C++调用如下接口直接返回空值,没有打印信息,是什么原因def getNextMsg(self): print('1') reach_end = False dec_data = {} data_id = None time_stamp = 0.0 try: blf_data = next(self._blf_reader) time_stamp = blf_data.timestamp if blf_data.is_extended_id: data_id = f"{blf_data.arbitration_id:010d}" else: data_id = f"{blf_data.arbitration_id:05d}" if None == blf_data.data : # return dec_data, reach_end, time_stamp, data_id pass try: dec_data = self._dbc_db.decode_message( blf_data.arbitration_id, blf_data.data) except Exception as e: reach_end = False # return dec_data, reach_end, time_stamp, data_id pass except Exception as e: reach_end = True return dec_data, reach_end, time_stamp, data_id def getMsgValue(self, _msg, _signal): value = _msg[_signal] print(type(value)) if cantools.database.can.signal.NamedSignalValue == type(value): print(value.value) return value.value return value def getMsgValueType(self, _msg, _signal): value = _msg[_signal] print(type(value)) if cantools.database.can.signal.NamedSignalValue == type(value): print(value.value) return type(value)
时间: 2024-02-14 13:18:49 浏览: 168
从您提供的代码来看,调用getNextMsg函数会返回4个值,分别是dec_data、reach_end、time_stamp和data_id,但您说返回了空值,那么这里就需要检查一下具体返回了什么空值。
另外,我注意到函数中有一些注释掉的代码,比如在判断blf_data.data是否为None时,直接执行了pass语句,这可能会导致dec_data的值为一个空的字典。如果您想要确定dec_data的值是否为空,建议您将注释去掉,打印一下dec_data的值,或者将其返回到函数外部进行检查。
最后,如果您仍然无法确定问题所在,请提供更多详细信息,例如输入参数、调用方式和错误信息等。
阅读全文