Dear professionals at RealDash

Peace be upon you. I’m requesting assistance in clarifying the process of sending a frame. Is there anyone in this forum who is an expert and can explain how to send a frame with illustrated examples or a video tutorial to make it easier for everyone to understand how to write XML and how to send a frame to a vehicle?
Review the topic on this page

https://forum.realdash.net/t/activate-the-dual-warning-signal-from-realdash/9487

CAN to RealDash
or RealDash to CAN ?

RealDash to CAN
i need send button on /off switch from RealDash : example Hazard Switch
and very thanks Falcon for quick answer to my.

<?xml version="1.0" encoding="utf-8"?>
<!-- ================= FRAME 0x100 ================= -->
<!-- Speed, RPM, Fuel(A2 raw), Coolant(A5 raw) -->
<frame id="0x100">
  <!-- Vehicle Speed -->
  <value targetId="64"  offset="0" length="2" units="mph" conversion="V"/>
  <!-- RPM -->
  <value targetId="37"  offset="2" length="2" units="rpm" conversion="V"/>

  <!-- Fuel Level: raw ADC 0-1023 -> 0-100% (adjust if your sender is reversed) -->
  <value targetId="170" offset="4" length="2" units="%" conversion="(V/1023)*100"/>

  <!-- Coolant Temp: raw ADC -> °F (simple bench scale; adjust for your sensor) -->
  <value targetId="14"  offset="6" length="2" units="F" conversion="(V/1023)*300"/>
</frame>

<!-- ================= FRAME 0x101 ================= -->
<!-- OilPress(A3), TransTemp(A4), BattVolt(A6), OilLife(A11) -->
<frame id="0x101">
  <!-- Engine Oil Pressure (RealDash expects Bar here, but you can still feed PSI via conversion if you want) -->
  <value targetId="151" offset="0" length="2" units="psi" conversion="(V/1023)*100"/>

  <!-- Transmission Oil Temperature -->
  <value targetId="138" offset="2" length="2" units="F" conversion="(V/1023)*300"/>

  <!-- Battery Voltage -->
  <value targetId="12"  offset="4" length="2" units="V" conversion="(V/1023)*20"/>

  <!-- Oil Life (custom, ECU Specific) -->
  <value name="Oil Life" offset="6" length="2" units="%" conversion="(V/1023)*100" rangeMin="0" rangeMax="100"/>
</frame>

<!-- ================= FRAME 0x102 ================= -->
<!-- Tyre pressures (A7-A10) -->
<frame id="0x102">
  <value targetId="240" offset="0" length="2" units="Bar" conversion="(V/1023)*6"/>
  <value targetId="241" offset="2" length="2" units="Bar" conversion="(V/1023)*6"/>
  <value targetId="242" offset="4" length="2" units="Bar" conversion="(V/1023)*6"/>
  <value targetId="243" offset="6" length="2" units="Bar" conversion="(V/1023)*6"/>
</frame>

<!-- ================= FRAME 0x103 ================= -->
<!-- Digital bits + GearValue -->
<frame id="0x103">

  <!-- digitalBits is 32-bit at offset 0; these are BITFIELDS -->
  <!-- Bit order matches sketch digitalPins[] order -->

  <!-- 22 Left Turn -->
  <value targetId="160" offset="0" length="4" startbit="0" bitcount="1" units="bit"/>
  <!-- 23 Right Turn -->
  <value targetId="161" offset="0" length="4" startbit="1" bitcount="1" units="bit"/>
  <!-- 24 High Beam -->
  <value targetId="157" offset="0" length="4" startbit="2" bitcount="1" units="bit"/>
  <!-- 25 Door Ajar (general) -->
  <value targetId="162" offset="0" length="4" startbit="3" bitcount="1" units="bit"/>
  <!-- 26 Trunk Ajar (general) -->
  <value targetId="163" offset="0" length="4" startbit="4" bitcount="1" units="bit"/>

  <!-- Manual Gear bits (ECU Specific named bits) -->
  <value name="Gear R Input" offset="0" length="4" startbit="5" bitcount="1" units="bit"/>
  <value name="Gear N Input" offset="0" length="4" startbit="6" bitcount="1" units="bit"/>
  <value name="Gear 1 Input" offset="0" length="4" startbit="7" bitcount="1" units="bit"/>
  <value name="Gear 2 Input" offset="0" length="4" startbit="8" bitcount="1" units="bit"/>
  <value name="Gear 3 Input" offset="0" length="4" startbit="9" bitcount="1" units="bit"/>
  <value name="Gear 4 Input" offset="0" length="4" startbit="10" bitcount="1" units="bit"/>
  <value name="Gear 5 Input" offset="0" length="4" startbit="11" bitcount="1" units="bit"/>

  <!-- Parking Brake -->
  <value targetId="164" offset="0" length="4" startbit="12" bitcount="1" units="bit"/>
  <!-- Seat Belt Warning -->
  <value targetId="168" offset="0" length="4" startbit="13" bitcount="1" units="bit"/>
  <!-- Check Engine Light -->
  <value targetId="65"  offset="0" length="4" startbit="14" bitcount="1" units="bit"/>
  <!-- Dimmer request -->
  <value name="Dimmer Request" offset="0" length="4" startbit="15" bitcount="1" units="bit"/>

  <!-- Door 1 / Door 2 -->
  <value targetId="481" offset="0" length="4" startbit="16" bitcount="1" units="bit"/>
  <value targetId="482" offset="0" length="4" startbit="17" bitcount="1" units="bit"/>
  <!-- Reverse Lights -->
  <value targetId="159" offset="0" length="4" startbit="18" bitcount="1" units="bit"/>
  <!-- Instrument Light Dimmer (Body Electronics) -->
  <value targetId="810" offset="0" length="4" startbit="19" bitcount="1" units="bit"/>

  <!-- Page buttons (ECU Specific so you can bind actions in the editor) -->
  <value name="Page Prev Button" offset="0" length="4" startbit="20" bitcount="1" units="bit"/>
  <value name="Page Next Button" offset="0" length="4" startbit="21" bitcount="1" units="bit"/>
  <value name="Page Home Button" offset="0" length="4" startbit="22" bitcount="1" units="bit"/>

  <!-- GearValue (encoded numeric) -> Transmission Selected Gear -->
  <value targetId="140" offset="4" length="2" units="gear" conversion="V"/>
  <!-- spare bytes at offset 6..7 -->
</frame>

<!-- ================= FRAME 0x104 ================= -->
<!-- OilTemp(A0), FuelPress(A1), Knob(A12), BattCurrent(A13) -->
<frame id="0x104">
  <value targetId="152" offset="0" length="2" units="F" conversion="(V/1023)*300"/>  <!-- Engine Oil Temp -->
  <value targetId="202" offset="2" length="2" units="psi" conversion="(V/1023)*100"/> <!-- Fuel Pressure -->
  <value name="Knob Input" offset="4" length="2" units="%" conversion="(V/1023)*100" rangeMin="0" rangeMax="100"/>
  <value name="Battery Current" offset="6" length="2" units="A" conversion="(V/1023)*200" rangeMin="0" rangeMax="200"/>
</frame>

<!-- ================= FRAME 0x105 ================= -->
<!-- MAP/Boost(A14), Ambient(A15) -->
<frame id="0x105">
  <value targetId="31"  offset="0" length="2" units="kPA" conversion="(V/1023)*250"/> <!-- MAP -->
  <value targetId="173" offset="2" length="2" units="F"   conversion="(V/1023)*120"/> <!-- Ambient -->
  <value name="Spare0" offset="4" length="2" conversion="V"/>
  <value name="Spare1" offset="6" length="2" conversion="V"/>
</frame>

<!-- ================= FRAME 0x106 ================= -->
<!-- Warning bits (computed) -->
<frame id="0x106">
  <value name="Warn: Low Oil Pressure"  offset="0" length="1" startbit="0" bitcount="1" units="bit"/>
  <value name="Warn: Over Coolant Temp" offset="0" length="1" startbit="1" bitcount="1" units="bit"/>
  <value name="Warn: Low Battery"       offset="0" length="1" startbit="2" bitcount="1" units="bit"/>
  <value name="Warn: Low Fuel Pressure" offset="0" length="1" startbit="3" bitcount="1" units="bit"/>
  <value name="Warn: High Oil Temp"     offset="0" length="1" startbit="4" bitcount="1" units="bit"/>
</frame>

This is what i use for mines. Also running off arduino. Maybe thus example will help

1 Like