我正在通过can总线传输各种车身信号,以监控驾驶员的睡意。 现在我遇到了以下问题:
例如:发送消息时,在dbc文件中定义如下
BO_ 515 C_Light: 8 Vector__XXX
SG_ C_Lightmode : 4|3@1+ (1,0) [0|7] "" Vector__XXX
SG_ C_Blinker : 1|2@1+ (1,0) [0|3] "" Vector__XXX
对于值4(100)和3(11),传输值为70(110 0 11 0),这导致了下一个问题
添加0的结果似乎忽略了信号的起始位
在其他情况下,我需要发送大于255的值,因此使用10位信号长度。这将导致8个正确发送但值错误的位和2个位被切断并作为分离信号处理。例如,360(101101000)被转换为104(1101000),随后是(前两个截止位)2(10)
有没有人曾经遇到过类似的问题,并且知道如何解决它们
我正在使用以下代码发送数据:
can_telematics_bus = can.interface.Bus()
db1 = cantools.db.load_file('../dbc/AGL_Candb.dbc')
def write_Light(Lightmode, Blinker ):
Light = db1.get_message_by_name('C_Light')
Light_data = Light.encode({'C_Lightmode': Lightmode, 'C_Blinker': Blinker})
Light_message = can.Message(arbitration_id=Light.frame_id, Light_data, is_extended_id= False)
can_telematics_bus.send(Light_message)
我的配置:
使用Python 3.6的Nvidia Jetson Nano
python can 3.3.4
cantools 31.1.0
阿杜伊诺乌诺
CAN总线屏蔽1.0.0
目前没有回答
相关问题 更多 >
编程相关推荐