FIFO在C语言中的应用

1.FIFO介绍

FIFO(First Input First Output),即先进先出队列。

这里介绍如何使用C语言对数据进行FIFO操作的方法。

首先建立一个队列,将待存储的数据存储到队列中,需要读取数据时从数列中读取数据。

2.FIFO实现

2.1.FIFO队列结构体

typedef struct _ByteQ_

{

unsigned char* buf;  // pointer of queue

int nInPos;          // input position of queue

int nOutPos;         // output position of queue

int nDataSize;       // data size in the queue

int nQSize;          // size of queue

}BYTEQ;

2.2.实现函数

// 队列初始化

void QInit(BYTEQ* pQ,unsigned char* buf,int bufSize);

// 数据入队

int QInPut(BYTEQ* pQ,unsigned char data);

// 多个数据入队

int QInPutBuf(BYTEQ* pQ,unsigned char* buf,int bufSize);

// 数据出队

int QGetDataSize(BYTEQ* pQ);

// 将队列中数据输出至buf,输出count个字节

int QOutPut(BYTEQ* pQ,unsigned char* pOut);

// 获取队列剩余空间

int QGetFreeSize(BYTEQ* pQ);

// 获取队列中数据个数(字节)

int QOutPutToBuf(BYTEQ* pQ,unsigned char* buf,int count);

// 获取队列指定位置的数值

unsigned char QGetAt(BYTEQ* pQ,int nIndex);

// 从队列头删除deleteCont个数据

void QDelete(BYTEQ* pQ,int deleteCount);

2.3.函数定义

见附件。

3.FIFO使用示例

1.建立FIFO,队列为testBuf[50],大小为50

Uint8 testBuf[50];

QInit(&testQ, &testBuf[0], 50);

2.存储数据

QInPut(&testQ, testData);

3.读取数据

If(1 == QOutPut(&testQ, &readData))

{

// Data from queue is stored in variable readData.

}

linux c语言fifo例程,FIFO在C语言中的应用相关推荐

  1. 【Linux】进程间通信-命名管道FIFO

    命名管道概述 如果我们要在不相关的进程间交换数据,那么使用FIFO文件将会十分方便. FIFO文件通常也称为命名管道(named pipe).命名管道是一种特殊类型的文件,它在文件系统中以文件名的形式 ...

  2. 使用c语言实现的fifo程序,C语言实现标准FIFO

    C语言实现标准FIFO 说明: 本文在C语言中实现了标准FIFO,可以存储任意类型的数据.FIFO返回给应用模块的是一个int类型的索引值,本质是一个指针.通过这层封装,可以简化提供给应用模块的接口. ...

  3. 【Linux编程】进程间通信(IPC)C语言实现

    转载自:[Linux编程]进程间通信(IPC) 进程间通信 (IPC,InterProcess Communication) 是指在不同进程之间传播或交换信息.IPC的方式通常有管道(包括无名管道和命 ...

  4. 嵌入式linux面试题解析(二)——C语言部分三

    嵌入式linux面试题解析(二)--C语言部分三 1.下面的程序会出现什么结果 #include <stdio.h> #include <stdlib.h> #include ...

  5. c语言程序stm8s,stm8s的c语言编程例程

    stm8s的c语言编程例程 实例一:控制灯的亮灭(或者蜂鸣器响,只要连接相应端口就可以了): #i nclude "stm8s.h""头文件 #defi ne ulong ...

  6. 《安富莱嵌入式周报》第283期:全开源逆向“爆破”硬件工具,Linux内核6.1将正式引入RUST语言,I3C培训教程,80款市场成熟的电感式位置传感器设计

    往期周报汇总地址:嵌入式周报 - uCOS & uCGUI & emWin & embOS & TouchGFX & ThreadX - 硬汉嵌入式论坛 - P ...

  7. sonix c语言 pdf,松翰c语言(项目)例程(Sonix C language routines (project)).doc

    松翰c语言(项目)例程(Sonix C language routines (project)) 松翰c语言(项目)例程(Sonix C language routines (project)) So ...

  8. 红旗linux9支持软件,红旗linux系统下载|红旗Linux操作系统9.0正式版下载(c语言编写) 最新版_数码资源网...

    今天带来的红旗Linux操作系统9.0正式版相信是很多从事编程行业人员非常了解的,红旗Linux系统下载是非常专业的c语言编写软件,同时红旗Linux操作系统9.0正式版还拥有开关机加速.Firstc ...

  9. Linux(Ubuntu)下,生成C语言可执行文件和汇编文件

    Linux(Ubuntu)下,生成C语言可执行文件和汇编文件 前言 一.一些Linux操作 二.编写C语言文件 三.生成可执行文件 1. 正常过程 2. 可能错误 四.直接生成汇编文件 五.反汇编 1 ...

最新文章

  1. 孩子数学成绩不好怎么办_孩子数学成绩不好,家长可以这样做
  2. centos7 python3安装numpy_Centos7安装python3、numpy、scipy、matplotlib、pandas等
  3. centos transmission 无法开启登录验证
  4. 在网页中调用本地的应用程序
  5. PAT甲级题目翻译+答案 AcWing(进位制)
  6. Java 并发总结——AQS
  7. stand up meeting 12/21/2015
  8. java mysql lru_Java集合详解5:深入理解LinkedHashMap和LRU缓存
  9. axios在派遣方法时候的异步
  10. mysql5.6 load_MySQL 5.6 dump/load buffer pool实验
  11. 滴滴 App 强制调取用户通讯录;子弹短信仍能泄露信息;特朗普炮轰谷歌 | 极客头条...
  12. Java ==和Equals方法的比较
  13. 技术总监7年总结,如何进行正确的沟通?
  14. 关于CM3/CM4位带操作的总结
  15. 代发核心期刊骗局_“代发论文”骗局:近2000人被骗 多数不愿报案
  16. 全志A64平台 TP9950 BT656输入驱动调试(1)环境搭建驱动编写
  17. 无线各种组网架构及应用
  18. C# 实现寻峰算法的简单优化(包含边峰,最小峰值,峰距)
  19. 七牛云图床php,PHP实现Markdown文章上传到七牛图床的实例内容
  20. 精通linux开关机表情包,这组宝藏表情包,你确定看懂了吗?

热门文章

  1. Jeesite 客户端验证Jquery Validate及服务器端验证
  2. 1-1. 虚拟机控制
  3. ASP.NET Core应用的错误处理[2]:DeveloperExceptionPageMiddleware中间件如何呈现“开发者异常页面”...
  4. ldconfig和ldd用法
  5. Codeforces Round #114 (Div. 2)
  6. PKI与证书服务应用
  7. 设计一套基于NHibernate二级缓存的MongoDB组件(上)
  8. ZZULIOJ 1125: 上三角矩阵的判断
  9. 台式计算机哪款好,台式一体机电脑哪款好
  10. 信息学奥赛一本通 1392:繁忙的都市(city) | 洛谷 P2330 [SCOI2005]繁忙的都市