项目场景:
提示:这里简述项目相关背景:
例如:项目场景:示例:通过蓝牙芯片(HC-05)与手机 APP 通信,每隔 5s 传输一批传感器数据(不是很大)
问题描述:
提示:这里描述项目中遇到的问题:
例如:数据传输过程中数据不时出现丢失的情况,偶尔会丢失一部分数据
APP 中接收数据代码:
#include<stdio.h>
//malloc
#include<stdlib.h>
//strlen
#include<string.h>
typedef struct fun{
int data;
struct fun *next;
}Lnode,*Linklist;
Linklist create();
void sum(Linklist L1,Linklist L2);
int main(){
Lnode *p;
Linklist L1,L2;
L1=create();
L2=create();
//sum(La,Lb);
p=L1->next;
while(p){
printf("%d",p->data);
p=p->next;
}
return 0;
}
Linklist create(){
Linklist head;
Lnode *p,*q;
head=(Linklist)malloc(sizeof(Lnode));
head->next=NULL;
int a=getchar();
while(a!='\n'){
p=(Lnode *)malloc(sizeof(Lnode));
p->data =a-'0';
if(head->next==NULL)
head->next=p;
else
q->next=p;
q=p;
a=getchar();
}
q->next=NULL;
return head;
}
void sum(Linklist L1,Linklist L2){
Lnode *p,*q,*t;
t=L1->next;
p=L2;
q=p->next;
while(q)
{
t=L1->next;
while(t->data!=q->data){
t=t->next;
}
if(t==NULL){
p->next=q->next;
q->next=L1->next;
L1->next=q;
}
q=p->next;
}
}
原因分析:
提示:这里填写问题的分析:
例如:Handler 发送消息有两种方式,分别是 Handler.obtainMessage()和 Handler.sendMessage(),其中 obtainMessage 方式当数据量过大时,由于 MessageQuene 大小也有限,所以当 message 处理不及时时,会造成先传的数据被覆盖,进而导致数据丢失。
解决方案:
提示:这里填写该问题的具体解决方案:
例如:新建一个 Message 对象,并将读取到的数据存入 Message,然后 mHandler.obtainMessage(READ_DATA, bytes, -1, buffer).sendToTarget();换成 mHandler.sendMessage()。