Leave Your Message

【Código aberto】Solución de visualización frontal para automóbiles baseada na pantalla intelixente T5L

26-09-2024

——De DWIN Foro de desenvolvedores

Hoxe destacamos un caso galardoado do foro de desenvolvedores de DWIN, a solución de visualización frontal para automóbiles con tecnoloxía T5L. A solución integra a pantalla COF de DWIN e o T5L. PODE porto para mostrar datos de velocidade e RPM do vehículo en tempo real, obtidos directamente do porto de diagnóstico OBDII. Isto proporciona aos condutores unha axuda visual cómoda e intuitiva durante a súa viaxe.

[Demostración de material da IU]

1.png

[Deseño de proxectos de GUI]

2.jpg

[Deseño do código do programa]

Obtén datos de velocidade e RPM do vehículo a través da interface CAN do T5L. Unha parte do código de referencia é a seguinte:

baleiro principal (baleiro)

{

T5LInit();

T0_Init(); // Configura o temporizador 0

EA = 1;

// Agardar por Fonte de alimentación estabilizar

RetardoExtensiónTemporizadorMs(2000);

InicioVistaDeGauge();

mentres (1)

{

//o sistema obdii inicia o proceso de recoñecemento

se (ObdiiSysEnter())

{

romper;

}

}

//Entrada de función primaria do HUD

FunciónVistaDeGauge();

}

 

baleiro GaugeViewFunc(baleiro)

{

uint8_t rawDataBuff[256];

uint8_t resultadoBuff[5];

velocidade do vehículo flotante = 0;

velocidade de rotación flotante = 0;

uint32_t datostemporais = 0;

mentres (1)

{

memset(rawDataBuff, 0, 256);

// ler a velocidade do vehículo

se (ObdiiReadPid(BuffDatosCrudos, 2, 0x01, 0x0C))

{

ObdiiLdsCalResult(0x0C, rawDataBuff, resultBuff);

DatosTemporais = resultadoBuff[3];

tempData = resultBuff[2] + (tempData

tempData = resultBuff[1] + (tempData

tempData = resultBuff[0] + (tempData

velocidadeDerotación = (float)datosTemporarios;

VistaDeCalibreVelocidadeDeRotaciónConxunto(velocidadeDerotación);

}

memset(rawDataBuff, 0, 256);

// Ler a velocidade do vehículo

se (ObdiiReadPid(BuffDatosCrudos, 2, 0x01, 0x0D))

{

ObdiiLdsCalResult(0x0D, rawDataBuff, resultBuff);

DatosTemporais = resultadoBuff[3];

tempData = resultBuff[2] + (tempData

tempData = resultBuff[1] + (tempData

tempData = resultBuff[0] + (tempData

velocidadeVehículo = (float)DatosTemporais;

GaugeViewPointerSet((uint8_t)velocidadeDoVehículo);

VistaDeGaugeVelocidadeVehículoConxunto(velocidadevehículo);

}

}

}

baleiro GaugeViewFunc(baleiro)

{

uint8_t rawDataBuff[256];

uint8_t resultadoBuff[5];

velocidade do vehículo flotante = 0;

velocidade de rotación flotante = 0;

uint32_t datostemporais = 0;

mentres (1)

{

memset(rawDataBuff, 0, 256);

// Ler RPM

se (ObdiiReadPid(BuffDatosCrudos, 2, 0x01, 0x0C))

{

ObdiiLdsCalResult(0x0C, rawDataBuff, resultBuff);

DatosTemporais = resultadoBuff[3];

tempData = resultBuff[2] + (tempData

tempData = resultBuff[1] + (tempData

tempData = resultBuff[0] + (tempData

velocidadeDerotación = (float)datosTemporarios;

VistaDeCalibreVelocidadeDeRotaciónConxunto(velocidadeDerotación);

}

memset(rawDataBuff, 0, 256);

// Ler a velocidade do vehículo

se (ObdiiReadPid(BuffDatosCrudos, 2, 0x01, 0x0D))

{

ObdiiLdsCalResult(0x0D, rawDataBuff, resultBuff);

DatosTemporais = resultadoBuff[3];

tempData = resultBuff[2] + (tempData

tempData = resultBuff[1] + (tempData

tempData = resultBuff[0] + (tempData

velocidadeVehículo = (float)DatosTemporais;

GaugeViewPointerSet((uint8_t)velocidadeDoVehículo);

VistaDeGaugeVelocidadeVehículoConxunto(velocidadevehículo);

}

}

}