C语言里如何设置缓冲区,
现在有一个无线项目,当接收到无线信号时进行处理,这里就有一个问题,当一个无线信号未处理完成时又接收到第二个信号,为防止第一个信号被擦掉和第二个信号被抛弃,需要设置缓冲区,...
现在有一个无线项目,当接收到无线信号时进行处理,这里就有一个问题,当一个无线信号未处理完成时又接收到第二个信号,为防止第一个信号被擦掉和第二个信号被抛弃,需要设置缓冲区,怎么设置?
有哪些办法解决这个问题, 请详细一点 展开
有哪些办法解决这个问题, 请详细一点 展开
2015-12-05 · 做真实的自己 用良心做教育
千锋教育
千锋教育专注HTML5大前端、JavaEE、Python、人工智能、UI&UE、云计算、全栈软件测试、大数据、物联网+嵌入式、Unity游戏开发、网络安全、互联网营销、Go语言等培训教育。
向TA提问
关注
展开全部
将数据以链表形式顺序存放,新数据总是放在表尾,待处理的数据总是在头结点下的第一个结点,处理完毕则释放空间。
缓冲器为暂时置放输出或输入资料的内存。缓冲器内资料自储存设备(如硬盘)来,放置在缓冲器中,须待机送至CPU或其他运算设备。缓冲区(buffer)这个中文译意源自当计算机的高速部件与低速部件通讯时,必须将高速部件的输出暂存到某处,以保证高速部件与低速部件相吻合. 后来这个意思被扩展了,成为"临时存贮区"的意思。
缓冲器为暂时置放输出或输入资料的内存。缓冲器内资料自储存设备(如硬盘)来,放置在缓冲器中,须待机送至CPU或其他运算设备。缓冲区(buffer)这个中文译意源自当计算机的高速部件与低速部件通讯时,必须将高速部件的输出暂存到某处,以保证高速部件与低速部件相吻合. 后来这个意思被扩展了,成为"临时存贮区"的意思。
展开全部
将数据以链表形式顺序存放,新数据总是放在表尾,待处理的数据总是在头结点下的第一个结点,处理完毕则释放空间。
#define BufferSize 1024 // 合适的大小你知道的
typedef struct node {
char *buffer;
struct node *next;
}*linkList;
LinkList *InitList() {
LinkList *head;
head = (char *)malloc(size(node));
head->next = NULL:
return head;
}
void AddData(LinkList *head, char *data) { // 将新数据添加到表尾
LinkList *p = head;
LinkList *anode = (char *)malloc(size(node));
anode->buffer = (char *)malloc(size(BufferSize));
strncpy(anode->buffer,data,BufferSize);
anode->next = NULL:
while(p->next) p = p->next;
p->next = anode;
}
void DealData(LinkList *head) {
LinkList *p = head->next;
if(p) {
head->next = p->next;
// p->buffer指向的数据待处理
free(p->buffer); // 处理完毕,释放空间
free(p);
}
}
#define BufferSize 1024 // 合适的大小你知道的
typedef struct node {
char *buffer;
struct node *next;
}*linkList;
LinkList *InitList() {
LinkList *head;
head = (char *)malloc(size(node));
head->next = NULL:
return head;
}
void AddData(LinkList *head, char *data) { // 将新数据添加到表尾
LinkList *p = head;
LinkList *anode = (char *)malloc(size(node));
anode->buffer = (char *)malloc(size(BufferSize));
strncpy(anode->buffer,data,BufferSize);
anode->next = NULL:
while(p->next) p = p->next;
p->next = anode;
}
void DealData(LinkList *head) {
LinkList *p = head->next;
if(p) {
head->next = p->next;
// p->buffer指向的数据待处理
free(p->buffer); // 处理完毕,释放空间
free(p);
}
}
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
很简单的定义一个数组,用两个变量下标来指向头和尾,新数据来尾++ 老数据处理完头++ 两个下标超过界限时从头开始循环利用 中间要考虑缓存数据空和数据满的情况
或者你动态分配空间,来一个信号分配空间,插入队列链表,处理完一个出队列,释放空间
或者你动态分配空间,来一个信号分配空间,插入队列链表,处理完一个出队列,释放空间
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
针对你的目的,一般做法是开个队列对历史信号进行存储。
新进来的信号存储到队列中,而程序处理队列中的第一项,处理完毕后把该项从队列中释放,如此反复。
新进来的信号存储到队列中,而程序处理队列中的第一项,处理完毕后把该项从队列中释放,如此反复。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询