51单片机串口用数组接收字符串程序怎么写?

接收到一大串,列如HTTP/1.1200OKServer:nginx/1.1.19X-Powered-By:PHP/5.3.10-1ubuntu3.6Set-Cookie... 接收到一大串,列如
HTTP/1.1 200 OK
Server: nginx/1.1.19
X-Powered-By: PHP/5.3.10-1ubuntu3.6
Set-Cookie:CAKEPHP=ljgd18fpupaedgrrhepn0moda6; expires=Sat, 18-Jul-201510:37:30 GMT; path=/
P3P: CP="NOIADM DEV PSAi COMNAV OUR OTRo STP IND DEM"

2d
{"timestamp":"2015-07-10T10:05:50","value":0}
0
只有"value":0是有用的,想要把它提取出来识别,控制led亮灭,该怎么去写c程序?
展开
 我来答
找她的那个他
推荐于2017-12-16 · 超过41用户采纳过TA的回答
知道小有建树答主
回答量:64
采纳率:0%
帮助的人:45.8万
展开全部
对于固定的数据,可以通过顺序判断来识别用if或switch语句来判决即可
通过串口中断,每次进入把SBUF的值赋给T,通过判决、累加NUM的值最终取得冒号后面的数值(不知楼主是否是要最后的数值)
void UART_Int(void) interrupt 4
{
static uchar NUM = 0;
uchar T;
if(RI == 1)
{
RI = 0;
T = SBUF;//接收串口数据
switch(T)//如果是按 value":0的顺序读进的话会最终触发NUN=7的条件
{
case 'v':
NUM = 1;
break;
case 'a':
if(NUM == 1)
{
NUM = 2;
}
else
{
NUM = 0;
}
break;
case 'l':
if(NUM == 2)
{
NUM = 3;
}
else
{
NUM = 0;
}
break;
case 'u':
if(NUM == 3)
{
NUM = 4;
}
else
{
NUM = 0;
}
break;
case 'e':
if(NUM == 4)
{
NUM = 5;
}
else
{
NUM = 0;
}
break;
case '"':
if(NUM == 5)
{
NUM = 6;
}
else
{
NUM = 0;
}
break;
case ':':
if(NUM == 6)
{
NUM = 7;
}
else
{
NUM = 0;
}
break;
default:
if(NUM == 7)
{
LED = T; //LED 为全局变量
}                       //把最后的数据传给LED
NUM = 0;
break;

}
}
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式