ID 값 ext경우 잘못 ID읽는 부분 수정
This commit is contained in:
79
graph.h
79
graph.h
@@ -168,7 +168,7 @@ const char graph_html[] PROGMEM = R"rawliteral(
|
||||
.signal-item:hover { border-color: #43cea2; transform: translateY(-2px); }
|
||||
.signal-item.selected { border-color: #185a9d; background: #e3f2fd; }
|
||||
.signal-name { font-weight: 600; color: #333; margin-bottom: 5px; font-size: 0.9em; }
|
||||
.signal-info { font-size: 0.8em; color: #666; }
|
||||
.signal-info { font-size: 0.8em; color: #666; line-height: 1.4; }
|
||||
.highlight {
|
||||
background-color: #ffeb3b;
|
||||
padding: 2px 0;
|
||||
@@ -265,6 +265,7 @@ const char graph_html[] PROGMEM = R"rawliteral(
|
||||
<button class="btn btn-success" onclick="startGraphing()">Start</button>
|
||||
<button class="btn btn-danger" onclick="stopGraphing()">Stop</button>
|
||||
<button class="btn btn-primary" onclick="clearSelection()">Clear</button>
|
||||
<button class="btn btn-primary" onclick="debugDBCInfo()">Debug Info</button>
|
||||
</div>
|
||||
|
||||
<div class="signal-selector">
|
||||
@@ -273,7 +274,7 @@ const char graph_html[] PROGMEM = R"rawliteral(
|
||||
<input type="text"
|
||||
id="search-box"
|
||||
class="search-box"
|
||||
placeholder="Search by signal name, CAN ID, or unit..."
|
||||
placeholder="Search by signal name, CAN ID, message name, or unit..."
|
||||
oninput="filterSignals()">
|
||||
<div id="search-info" class="search-info" style="display:none;"></div>
|
||||
</div>
|
||||
@@ -383,12 +384,27 @@ const char graph_html[] PROGMEM = R"rawliteral(
|
||||
line = line.trim();
|
||||
|
||||
if (line.startsWith('BO_ ')) {
|
||||
const match = line.match(/BO_\s+(\d+)\s+(\w+)\s*:/);
|
||||
const match = line.match(/BO_\s+(\d+)\s+(\w+)\s*:\s*(\d+)/);
|
||||
if (match) {
|
||||
const id = parseInt(match[1]);
|
||||
let id = parseInt(match[1]);
|
||||
const name = match[2];
|
||||
currentMessage = {id: id, name: name, signals: []};
|
||||
const dlc = parseInt(match[3]);
|
||||
|
||||
// Extended CAN ID 처리 (bit 31이 set되어 있으면 제거)
|
||||
// CAN Extended format에서 bit 31은 Extended ID 플래그
|
||||
if (id & 0x80000000) {
|
||||
id = id & 0x1FFFFFFF; // bit 31 제거, 29-bit ID만 사용
|
||||
}
|
||||
|
||||
currentMessage = {
|
||||
id: id,
|
||||
name: name,
|
||||
dlc: dlc,
|
||||
signals: []
|
||||
};
|
||||
dbcData.messages[id] = currentMessage;
|
||||
|
||||
console.log('Parsed Message: ID=' + id + ' (0x' + id.toString(16).toUpperCase() + ') Name=' + name + ' DLC=' + dlc);
|
||||
}
|
||||
}
|
||||
else if (line.startsWith('SG_ ') && currentMessage) {
|
||||
@@ -402,19 +418,23 @@ const char graph_html[] PROGMEM = R"rawliteral(
|
||||
signed: match[5] === '-',
|
||||
factor: parseFloat(match[6]),
|
||||
offset: parseFloat(match[7]),
|
||||
minMax: match[8],
|
||||
unit: match[9],
|
||||
messageId: currentMessage.id,
|
||||
messageName: currentMessage.name
|
||||
messageName: currentMessage.name,
|
||||
messageDlc: currentMessage.dlc
|
||||
};
|
||||
currentMessage.signals.push(signal);
|
||||
allSignals.push(signal);
|
||||
|
||||
console.log(' Signal: ' + signal.name + ' [' + signal.startBit + '|' + signal.bitLength + '] Unit: ' + signal.unit);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
filteredSignals = [...allSignals];
|
||||
displaySignals();
|
||||
showStatus('DBC loaded: ' + Object.keys(dbcData.messages).length + ' messages', 'success');
|
||||
showStatus('DBC loaded: ' + Object.keys(dbcData.messages).length + ' messages, ' + allSignals.length + ' signals', 'success');
|
||||
}
|
||||
|
||||
function filterSignals() {
|
||||
@@ -426,10 +446,18 @@ const char graph_html[] PROGMEM = R"rawliteral(
|
||||
} else {
|
||||
filteredSignals = allSignals.filter(signal => {
|
||||
const nameMatch = signal.name.toLowerCase().includes(searchQuery);
|
||||
const idMatch = signal.messageId.toString(16).toLowerCase().includes(searchQuery);
|
||||
|
||||
const idDecMatch = signal.messageId.toString().includes(searchQuery);
|
||||
|
||||
const idHex = signal.messageId.toString(16).toLowerCase();
|
||||
const idHexMatch = idHex.includes(searchQuery) ||
|
||||
idHex.includes(searchQuery.replace('0x', ''));
|
||||
|
||||
const msgNameMatch = signal.messageName.toLowerCase().includes(searchQuery);
|
||||
|
||||
const unitMatch = signal.unit && signal.unit.toLowerCase().includes(searchQuery);
|
||||
|
||||
return nameMatch || idMatch || unitMatch;
|
||||
return nameMatch || idDecMatch || idHexMatch || msgNameMatch || unitMatch;
|
||||
});
|
||||
|
||||
const searchInfo = document.getElementById('search-info');
|
||||
@@ -500,18 +528,20 @@ const char graph_html[] PROGMEM = R"rawliteral(
|
||||
|
||||
item.onclick = () => toggleSignal(signal, item);
|
||||
|
||||
const canIdHex = '0x' + signal.messageId.toString(16).toUpperCase().padStart(3, '0');
|
||||
|
||||
const highlightedName = highlightText(signal.name, searchQuery);
|
||||
const canId = '0x' + signal.messageId.toString(16).toUpperCase();
|
||||
const highlightedId = highlightText(canId, searchQuery);
|
||||
const unitText = signal.unit ? highlightText(signal.unit, searchQuery) : '';
|
||||
const highlightedId = highlightText(canIdHex, searchQuery);
|
||||
const highlightedMsgName = highlightText(signal.messageName, searchQuery);
|
||||
const unitText = signal.unit ? highlightText(signal.unit, searchQuery) : 'no unit';
|
||||
|
||||
item.innerHTML =
|
||||
'<div class="signal-name">' + highlightedName + '</div>' +
|
||||
'<div class="signal-info">' +
|
||||
'ID: ' + highlightedId + ' | ' +
|
||||
signal.bitLength + 'bit' +
|
||||
(signal.unit ? ' | ' + unitText : '') +
|
||||
'CAN ID: ' + highlightedId + ' (' + highlightedMsgName + ')<br>' +
|
||||
'Bit: ' + signal.startBit + '|' + signal.bitLength + ' | ' + unitText +
|
||||
'</div>';
|
||||
|
||||
signalList.appendChild(item);
|
||||
});
|
||||
|
||||
@@ -638,6 +668,25 @@ const char graph_html[] PROGMEM = R"rawliteral(
|
||||
showStatus('Use the stop button in the graph viewer window', 'error');
|
||||
}
|
||||
|
||||
function debugDBCInfo() {
|
||||
console.log('=== DBC Debug Info ===');
|
||||
console.log('Total Messages: ' + Object.keys(dbcData.messages).length);
|
||||
console.log('Total Signals: ' + allSignals.length);
|
||||
|
||||
Object.values(dbcData.messages).forEach(msg => {
|
||||
console.log('\nMessage: ' + msg.name);
|
||||
console.log(' ID: ' + msg.id + ' (0x' + msg.id.toString(16).toUpperCase() + ')');
|
||||
console.log(' DLC: ' + msg.dlc);
|
||||
console.log(' Signals: ' + msg.signals.length);
|
||||
|
||||
msg.signals.forEach(sig => {
|
||||
console.log(' - ' + sig.name + ': ' + sig.startBit + '|' + sig.bitLength + ' [' + sig.unit + ']');
|
||||
});
|
||||
});
|
||||
|
||||
showStatus('Debug info printed to console (F12)', 'success');
|
||||
}
|
||||
|
||||
function showStatus(message, type) {
|
||||
const status = document.getElementById('status');
|
||||
status.textContent = message;
|
||||
|
||||
Reference in New Issue
Block a user