Display_Avr_3/hdlc_screen/LCD/Lcd_print.c
2024-02-22 17:16:03 +03:00

93 lines
3.6 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#include "lcd_headers.h"
#include "lcd.h"
//#include "time.h"
// #include <Arduino.h>
//#include <cstddef>
struct TextCounter {
unsigned long startTime;
int incrementValue;
};
struct TextCounter textCounter;
//struct TextCounter textCounter;
void Lcd_inciliation() {
lcd_init(LCD_DISP_ON_BLINK); // инициализация дисплея
lcd_home(); // домой курсор
lcd_led(0); // вкл подсветки
//textCounter.startTime = millis(); // Запоминаем время запуска программы
//Из за строчки выше все ломается
}
void fillBuffer1(const char* source, char* buffer, size_t bufferSize, int incrementValue) {
int startIndex = incrementValue % strlen(source); // Определяем начальный индекс на основе incrementValue
int endIndex = startIndex + 16;
for (int i = 0; i < 16; ++i) {
buffer[i] = source[(startIndex + i) % strlen(source)];
}
buffer[16] = '\0'; // Установка нулевого символа в конце буфера
}
void fillBuffer2(float value1, float value2, float value3, char* buffer, size_t bufferSize) {
snprintf(buffer, bufferSize, "%.2f.%.2f.%.2f", value1, value2, value3);
}
void printLcd(struct DisplayData* displayData) {
//unsigned long currentTime = millis(); // Текущее время
// Проверяем, прошло ли 500 мс с момента последнего увеличения incrementValue
//if (currentTime - textCounter.startTime >= 500) {
// textCounter.incrementValue++; // Увеличиваем incrementValue на 1
// textCounter.startTime = currentTime; // Обновляем время
//}
//struct DisplayData displayData;
//strncpy(displayData.topLine, decode_message->str, sizeof(displayData.topLine) - 1);
//displayData.topLine[sizeof(displayData.topLine) - 1] = '\0';
//displayData.value1 = displayDataResp->value1;
//displayData.value2 = displayDataResp->value2;
//displayData.value3 = displayDataResp->value3;
// Буферы для заполнения данных
char buffer1[17];
char buffer2[17];
// Заполнение буфера 1
fillBuffer1(displayData->topLine, buffer1, sizeof(buffer1), textCounter.incrementValue);
// Заполнение буфера 2
fillBuffer2(displayData->value1, displayData->value2, displayData->value3, buffer2, sizeof(buffer2));
// Создание массива для вывода на дисплей
char displayArray[32];
strncpy(displayArray, buffer1, 16); // Копирование первых 16 символов из buffer1 в displayArray
strncpy(displayArray + 16, buffer2, 16); // Копирование первых 16 символов из buffer2 в displayArray, начиная с позиции 16
// Вывод данных на экран
lcd_gotoxy(0, 0);
lcd_puts(displayArray);
lcd_gotoxy(0, 1);
lcd_puts(displayArray + 16); // Вывод второй половины displayArray
}
//void dder() {
// Lcd_inciliation();
//
// uint8_t encode_message[100];
// size_t len_encode_message = 0;
// struct message message;
//
//
// // Получаем данные из протокола
// protocol_encode(message, encode_message, &len_encode_message);
//
// // Декодируем данные из протокола
// struct message decode_message;
// protocol_decode(encode_message, len_encode_message, &decode_message);
//
// // Выводим данные на экран
// printLcd(&decode_message);
//}