linux c语言fifo例程,FIFO在C语言中的应用
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语言中的应用相关推荐
- 【Linux】进程间通信-命名管道FIFO
命名管道概述 如果我们要在不相关的进程间交换数据,那么使用FIFO文件将会十分方便. FIFO文件通常也称为命名管道(named pipe).命名管道是一种特殊类型的文件,它在文件系统中以文件名的形式 ...
- 使用c语言实现的fifo程序,C语言实现标准FIFO
C语言实现标准FIFO 说明: 本文在C语言中实现了标准FIFO,可以存储任意类型的数据.FIFO返回给应用模块的是一个int类型的索引值,本质是一个指针.通过这层封装,可以简化提供给应用模块的接口. ...
- 【Linux编程】进程间通信(IPC)C语言实现
转载自:[Linux编程]进程间通信(IPC) 进程间通信 (IPC,InterProcess Communication) 是指在不同进程之间传播或交换信息.IPC的方式通常有管道(包括无名管道和命 ...
- 嵌入式linux面试题解析(二)——C语言部分三
嵌入式linux面试题解析(二)--C语言部分三 1.下面的程序会出现什么结果 #include <stdio.h> #include <stdlib.h> #include ...
- c语言程序stm8s,stm8s的c语言编程例程
stm8s的c语言编程例程 实例一:控制灯的亮灭(或者蜂鸣器响,只要连接相应端口就可以了): #i nclude "stm8s.h""头文件 #defi ne ulong ...
- 《安富莱嵌入式周报》第283期:全开源逆向“爆破”硬件工具,Linux内核6.1将正式引入RUST语言,I3C培训教程,80款市场成熟的电感式位置传感器设计
往期周报汇总地址:嵌入式周报 - uCOS & uCGUI & emWin & embOS & TouchGFX & ThreadX - 硬汉嵌入式论坛 - P ...
- sonix c语言 pdf,松翰c语言(项目)例程(Sonix C language routines (project)).doc
松翰c语言(项目)例程(Sonix C language routines (project)) 松翰c语言(项目)例程(Sonix C language routines (project)) So ...
- 红旗linux9支持软件,红旗linux系统下载|红旗Linux操作系统9.0正式版下载(c语言编写) 最新版_数码资源网...
今天带来的红旗Linux操作系统9.0正式版相信是很多从事编程行业人员非常了解的,红旗Linux系统下载是非常专业的c语言编写软件,同时红旗Linux操作系统9.0正式版还拥有开关机加速.Firstc ...
- Linux(Ubuntu)下,生成C语言可执行文件和汇编文件
Linux(Ubuntu)下,生成C语言可执行文件和汇编文件 前言 一.一些Linux操作 二.编写C语言文件 三.生成可执行文件 1. 正常过程 2. 可能错误 四.直接生成汇编文件 五.反汇编 1 ...
最新文章
- 孩子数学成绩不好怎么办_孩子数学成绩不好,家长可以这样做
- centos7 python3安装numpy_Centos7安装python3、numpy、scipy、matplotlib、pandas等
- centos transmission 无法开启登录验证
- 在网页中调用本地的应用程序
- PAT甲级题目翻译+答案 AcWing(进位制)
- Java 并发总结——AQS
- stand up meeting 12/21/2015
- java mysql lru_Java集合详解5:深入理解LinkedHashMap和LRU缓存
- axios在派遣方法时候的异步
- mysql5.6 load_MySQL 5.6 dump/load buffer pool实验
- 滴滴 App 强制调取用户通讯录;子弹短信仍能泄露信息;特朗普炮轰谷歌 | 极客头条...
- Java ==和Equals方法的比较
- 技术总监7年总结,如何进行正确的沟通?
- 关于CM3/CM4位带操作的总结
- 代发核心期刊骗局_“代发论文”骗局:近2000人被骗 多数不愿报案
- 全志A64平台 TP9950 BT656输入驱动调试(1)环境搭建驱动编写
- 无线各种组网架构及应用
- C# 实现寻峰算法的简单优化(包含边峰,最小峰值,峰距)
- 七牛云图床php,PHP实现Markdown文章上传到七牛图床的实例内容
- 精通linux开关机表情包,这组宝藏表情包,你确定看懂了吗?
热门文章
- Jeesite 客户端验证Jquery Validate及服务器端验证
- 1-1. 虚拟机控制
- ASP.NET Core应用的错误处理[2]:DeveloperExceptionPageMiddleware中间件如何呈现“开发者异常页面”...
- ldconfig和ldd用法
- Codeforces Round #114 (Div. 2)
- PKI与证书服务应用
- 设计一套基于NHibernate二级缓存的MongoDB组件(上)
- ZZULIOJ 1125: 上三角矩阵的判断
- 台式计算机哪款好,台式一体机电脑哪款好
- 信息学奥赛一本通 1392:繁忙的都市(city) | 洛谷 P2330 [SCOI2005]繁忙的都市