【Código aberto】Solución de visualización frontal para automóbiles baseada na pantalla intelixente T5L
——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]

[Deseño de proxectos de GUI]

[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);
}
}
}







