From 87a51ef2ba01887cba95b2344b8edad3c53b8464 Mon Sep 17 00:00:00 2001 From: 3minbe Date: Mon, 17 Feb 2025 17:21:44 +0900 Subject: [PATCH] =?UTF-8?q?RX=20=EB=B3=80=ED=99=98=20=EA=B8=B0=EB=8A=A5=20?= =?UTF-8?q?=EA=B0=9C=EC=84=A0:=20Motorola=20=EB=B0=A9=EC=8B=9D=EC=9D=98=20?= =?UTF-8?q?=EC=8B=A0=ED=98=B8=20=EC=B2=98=EB=A6=AC=20=EB=A1=9C=EC=A7=81=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- DBC_Converter_RX.py | 5 ++++- DBC_Converter_TX.py | 10 ++++++++-- settings.json | 2 +- 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/DBC_Converter_RX.py b/DBC_Converter_RX.py index 2a45b88..970a1ab 100644 --- a/DBC_Converter_RX.py +++ b/DBC_Converter_RX.py @@ -98,9 +98,10 @@ void Receive_{message_name}_{message_info['ID']}(void) start_bit = signal["msb"] % 8 signal_length = signal["Length"] if signal["Byte order"] == 0: # Motorola (Big Endian) - shift_expr = f"(CAN_ch[0].rx.buf[{start_byte}] << shift{7 - start_bit})" + lsb = signal["msb"] + 8*(signal_length // 8) - (signal_length % 8 - 1) if signal_length > 8: # Handle multi-byte signals + shift_expr = f"(CAN_ch[0].rx.buf[{start_byte}] << shift{7 - start_bit})" multi_byte_expr = [] for i in range((signal_length + 7) // 8): byte_shift = (7 - start_bit) + (i * 8) @@ -109,6 +110,8 @@ void Receive_{message_name}_{message_info['ID']}(void) else: multi_byte_expr.append(f"(CAN_ch[0].rx.buf[{start_byte + i}] >> shift{byte_shift})") shift_expr = " | ".join(multi_byte_expr) + else : + shift_expr = f"(CAN_ch[0].rx.buf[{start_byte}] >> shift{lsb % 8})" else: # Intel (Little Endian) shift_expr = f"(CAN_ch[0].rx.buf[{start_byte}] >> shift{start_bit})" if signal_length > 8: diff --git a/DBC_Converter_TX.py b/DBC_Converter_TX.py index 54ae71c..252d68d 100644 --- a/DBC_Converter_TX.py +++ b/DBC_Converter_TX.py @@ -102,7 +102,7 @@ def generate_vcu_can_transmit_single_c_file(signals, output_file): # Iterate through all messages in the signals for message_name, message_info in signals.items(): # Check if any signal in the message has RX ECU name as VCU - has_vcu_signal = any(signal["RX ECU name"] == "VCU" for signal in message_info["Signals"]) + has_vcu_signal = any(signal["RX ECU name"] != "VCU" for signal in message_info["Signals"]) if not has_vcu_signal: continue # Skip this message if no signal has RX ECU name as VCU @@ -124,7 +124,13 @@ void Transmit_{message_name}_CH0_{message_info['ID']}(void) while signal_length > 0: bits_in_byte = min(8 - start_bit, signal_length) shift_amount = (signal["Length"] - signal_length) - shift_expr = f"({signal_name} >> shift{shift_amount}) << shift{start_bit}" if start_bit > 0 else f"({signal_name} >> shift{shift_amount})" + if signal["Byte order"] == 0: # Motorola (Big Endian) + if bits_in_byte == 8: + shift_expr = f"({signal_name} >> shift{shift_amount})" + else: + shift_expr = f"({signal_name} << shift{start_bit})" if start_bit > 0 else f"({signal_name} >> shift{shift_amount})" + else: # Intel (Little Endian) + shift_expr = f"({signal_name} >> shift{shift_amount}) << shift{start_bit}" if start_bit > 0 else f"({signal_name} >> shift{shift_amount})" buffer_index = start_byte # Ensure buffer_index is within the range of buffer_assignments diff --git a/settings.json b/settings.json index 656cc45..3771384 100644 --- a/settings.json +++ b/settings.json @@ -2,6 +2,6 @@ "theme": "light", "default_save_path": "C:/Users/MSI/Desktop", "file_paths": [], - "last_opened_dir": "C:/Users/MSI/SynologyDrive/3min_be/한자연/!과제/초안전/#Debug/DBC", + "last_opened_dir": "C:/Users/MSI/Desktop/python/motorola_tx", "channel_info": {} } \ No newline at end of file