mirror of
https://github.com/3minbe/DBC_Converter.git
synced 2026-05-17 01:23:58 +09:00
RX 변환 기능 개선: Motorola 방식의 신호 처리 로직 수정
This commit is contained in:
parent
c48bc02733
commit
87a51ef2ba
@ -98,9 +98,10 @@ void Receive_{message_name}_{message_info['ID']}(void)
|
|||||||
start_bit = signal["msb"] % 8
|
start_bit = signal["msb"] % 8
|
||||||
signal_length = signal["Length"]
|
signal_length = signal["Length"]
|
||||||
if signal["Byte order"] == 0: # Motorola (Big Endian)
|
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:
|
if signal_length > 8:
|
||||||
# Handle multi-byte signals
|
# Handle multi-byte signals
|
||||||
|
shift_expr = f"(CAN_ch[0].rx.buf[{start_byte}] << shift{7 - start_bit})"
|
||||||
multi_byte_expr = []
|
multi_byte_expr = []
|
||||||
for i in range((signal_length + 7) // 8):
|
for i in range((signal_length + 7) // 8):
|
||||||
byte_shift = (7 - start_bit) + (i * 8)
|
byte_shift = (7 - start_bit) + (i * 8)
|
||||||
@ -109,6 +110,8 @@ void Receive_{message_name}_{message_info['ID']}(void)
|
|||||||
else:
|
else:
|
||||||
multi_byte_expr.append(f"(CAN_ch[0].rx.buf[{start_byte + i}] >> shift{byte_shift})")
|
multi_byte_expr.append(f"(CAN_ch[0].rx.buf[{start_byte + i}] >> shift{byte_shift})")
|
||||||
shift_expr = " | ".join(multi_byte_expr)
|
shift_expr = " | ".join(multi_byte_expr)
|
||||||
|
else :
|
||||||
|
shift_expr = f"(CAN_ch[0].rx.buf[{start_byte}] >> shift{lsb % 8})"
|
||||||
else: # Intel (Little Endian)
|
else: # Intel (Little Endian)
|
||||||
shift_expr = f"(CAN_ch[0].rx.buf[{start_byte}] >> shift{start_bit})"
|
shift_expr = f"(CAN_ch[0].rx.buf[{start_byte}] >> shift{start_bit})"
|
||||||
if signal_length > 8:
|
if signal_length > 8:
|
||||||
|
|||||||
@ -102,7 +102,7 @@ def generate_vcu_can_transmit_single_c_file(signals, output_file):
|
|||||||
# Iterate through all messages in the signals
|
# Iterate through all messages in the signals
|
||||||
for message_name, message_info in signals.items():
|
for message_name, message_info in signals.items():
|
||||||
# Check if any signal in the message has RX ECU name as VCU
|
# 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:
|
if not has_vcu_signal:
|
||||||
continue # Skip this message if no signal has RX ECU name as VCU
|
continue # Skip this message if no signal has RX ECU name as VCU
|
||||||
|
|
||||||
@ -124,6 +124,12 @@ void Transmit_{message_name}_CH0_{message_info['ID']}(void)
|
|||||||
while signal_length > 0:
|
while signal_length > 0:
|
||||||
bits_in_byte = min(8 - start_bit, signal_length)
|
bits_in_byte = min(8 - start_bit, signal_length)
|
||||||
shift_amount = (signal["Length"] - signal_length)
|
shift_amount = (signal["Length"] - signal_length)
|
||||||
|
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})"
|
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
|
buffer_index = start_byte
|
||||||
|
|
||||||
|
|||||||
@ -2,6 +2,6 @@
|
|||||||
"theme": "light",
|
"theme": "light",
|
||||||
"default_save_path": "C:/Users/MSI/Desktop",
|
"default_save_path": "C:/Users/MSI/Desktop",
|
||||||
"file_paths": [],
|
"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": {}
|
"channel_info": {}
|
||||||
}
|
}
|
||||||
Loading…
Reference in New Issue
Block a user