串口接收 队列 C语言代码
时间: 2023-08-24 18:05:01 浏览: 50
以下是一个简单的串口接收队列的 C 语言代码示例:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define QUEUE_SIZE 10
// 定义队列结构体
typedef struct {
char* buffer[QUEUE_SIZE];
int front;
int rear;
int itemCount;
} Queue;
// 初始化队列
void initQueue(Queue* q) {
q->front = 0;
q->rear = -1;
q->itemCount = 0;
}
// 检查队列是否为空
int isQueueEmpty(Queue* q) {
return q->itemCount == 0;
}
// 检查队列是否已满
int isQueueFull(Queue* q) {
return q->itemCount == QUEUE_SIZE;
}
// 入队
void enqueue(Queue* q, char* item) {
if(!isQueueFull(q)) {
if(q->rear == QUEUE_SIZE-1) {
q->rear = -1;
}
q->buffer[++q->rear] = item;
q->itemCount++;
}
}
// 出队
char* dequeue(Queue* q) {
char* item = q->buffer[q->front++];
if(q->front == QUEUE_SIZE) {
q->front = 0;
}
q->itemCount--;
return item;
}
int main() {
Queue q;
initQueue(&q);
// 模拟串口接收到的字符
char* receivedChars = "hello world\n";
// 将接收到的字符逐个入队
for(int i=0; i<strlen(receivedChars); i++) {
enqueue(&q, &receivedChars[i]);
}
// 从队列中逐个取出字符并打印
while(!isQueueEmpty(&q)) {
printf("%c", *dequeue(&q));
}
return 0;
}
```
这个示例代码演示了一个简单的串口接收队列,使用了一个包含固定大小缓冲区的循环队列来存储接收到的字符。在实际应用中,可能需要根据具体情况进行修改和扩展。