Изменил(а) на 'UART/circular_buf.c'

This commit is contained in:
Никита Солодянкин 2023-06-18 10:59:07 +00:00
parent 2739418e23
commit 4956ae0a24

View File

@ -1,42 +1,36 @@
#include <stdio.h>
#include <stdlib.h>
#define BUFFER_SIZE 10
typedef struct {
int buffer[BUFFER_SIZE];
int BufHead;
int BufTail;
} CircularBuffer;
void initializeBuffer(CircularBuffer* cb) {
cb->BufHead = 0;
cb->BufTail = 0;
}
// Проверка, является ли буфер пустым
int BufferEmpty(const CircularBuffer* cb) {
return cb->BufHead == cb->BufTail;
}
// Проверка, является ли буфер полным
int BufferFull(const CircularBuffer* cb) {
return (cb->BufTail + 1) % BUFFER_SIZE == cb->BufHead;//проверяем слудеющее число, если оно будет совпадать с индексом головы то будет false, при совпадении вывыедет true
}
// Запись элемента в буфер
void writeBuffer(CircularBuffer* cb, int value) {
if (BufferFull(cb)) { // проверка на заполненность
return;
}
cb->buffer[cb->BufTail] = value;//записывает значение value в элемент массива buffer в хвост
cb->BufTail = (cb->BufTail + 1) % BUFFER_SIZE;//присваивается cb->BufTail, обновляя его значение на следующий индекс в кольцевом буфере
}
// Чтение элемента из буфера
int readBuffer(CircularBuffer* cb) {
if (BufferEmpty(cb)) { //проверяет буффер на пустоту
return -1;// -1 в качестве индикатора ошибки
}
int value = cb->buffer[cb->BufHead]; //читаем значение из массива по индексу головы
cb->BufHead = (cb->BufHead + 1) % BUFFER_SIZE; //увеличиваем индекс головы +1
return value;
}
#include <stdio.h>
#include <stdlib.h>
#include "circular_buf.h"
void initialize_buffer(struct circular_buffer* cb) {
cb->buf_head = 0;
cb->buf_tail = 0;
}
// Проверка, является ли буфер пустым
int buffer_empty(const struct circular_buffer* cb) {
return cb->buf_head == cb->buf_tail;
}
// Проверка, является ли буфер полным
int buffer_full(const struct circular_buffer* cb) {
return (cb->buf_tail + 1) % BUFFER_SIZE == cb->buf_head;//проверяем слудеющее число, если оно будет совпадать с индексом головы то будет false, при совпадении вывыедет true
}
// Запись элемента в буфер
void write_buffer(struct circular_buffer* cb, int value) {
if (buffer_full(cb)) { // проверка на заполненность
return;
}
cb->buffer[cb->buf_tail] = value;//записывает значение value в элемент массива buffer в хвост
cb->buf_tail = (cb->buf_tail + 1) % BUFFER_SIZE;//присваивается cb->buf_tail, обновляя его значение на следующий индекс в кольцевом буфере
}
// Чтение элемента из буфера
int read_buffer(struct circular_buffer* cb) {
if (buffer_empty(cb)) { //проверяет буффер на пустоту
return -1;// -1 в качестве индикатора ошибки
}
int value = cb->buffer[cb->buf_head]; //читаем значение из массива по индексу головы
cb->buf_head = (cb->buf_head + 1) % BUFFER_SIZE; //увеличиваем индекс головы +1
return value;
}