mirror of https://github.com/FOME-Tech/wiki.git
97 lines
2.8 KiB
TypeScript
97 lines
2.8 KiB
TypeScript
import { Dbc } from 'candied';
|
|
import type { DbcData } from 'candied/lib/dbc/Dbc';
|
|
import { dbcReader } from 'candied/lib/filesystem/DbcWebFs';
|
|
import { useEffect, useState } from 'react';
|
|
|
|
import fomeDbcFileRaw from '!!raw-loader!../data/FOME_CAN_verbose.dbc';
|
|
|
|
const DbcViewer = () => {
|
|
const [dbcData, setDbcData] = useState<DbcData>(null);
|
|
|
|
useEffect(() => {
|
|
const dbc = new Dbc();
|
|
|
|
dbcReader(new File([fomeDbcFileRaw], 'file.dbc'), (content) => {
|
|
const data = dbc.load(content);
|
|
setDbcData(data);
|
|
});
|
|
}, []);
|
|
|
|
if (!dbcData) {
|
|
return <span>Loading...</span>;
|
|
}
|
|
|
|
return (
|
|
<div>
|
|
{Array.from(dbcData.messages.values())
|
|
.sort((a, b) => Number(a.id) - Number(b.id))
|
|
.map((message) => (
|
|
<div key={message.id}>
|
|
<h3 id={`#${message.name}`}>Message {message.name}</h3>
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th>Name</th>
|
|
<th>CAN ID</th>
|
|
<th>DLC</th>
|
|
<th>Description</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td>{message.name}</td>
|
|
<td>
|
|
{message.id} ({`0x${message.id.toString(16)}`})
|
|
</td>
|
|
<td>{message.dlc}</td>
|
|
<td>{message.description}</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
|
|
<h4>Signals</h4>
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th>Name</th>
|
|
<th>Type</th>
|
|
<th>Start</th>
|
|
<th>Length</th>
|
|
<th>Factor</th>
|
|
<th>Offset</th>
|
|
<th>Min/Max</th>
|
|
<th>Unit</th>
|
|
<th>Description</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
{Array.from(message.signals.values()).map((signal) => (
|
|
<tr key={`${signal.name}-${signal.startBit}`}>
|
|
<td>{signal.name}</td>
|
|
<td>
|
|
{signal.dataType}
|
|
<br />({signal.endian === 'Intel' ? 'LE' : 'BE'})
|
|
</td>
|
|
<td>{signal.startBit}</td>
|
|
<td>{signal.length}</td>
|
|
<td>{signal.factor}</td>
|
|
<td>{signal.offset}</td>
|
|
<td>
|
|
{signal.min}..{signal.max}
|
|
</td>
|
|
<td style={{ whiteSpace: 'nowrap' }}>{signal.unit}</td>
|
|
<td>{signal.description}</td>
|
|
</tr>
|
|
))}
|
|
</tbody>
|
|
</table>
|
|
|
|
<hr />
|
|
</div>
|
|
))}
|
|
</div>
|
|
);
|
|
};
|
|
|
|
export default DbcViewer;
|