void ser() interrupt 4 //串口中断服务程序
{
RI=0;//接收中断标志位,停止接收
for(row=0;row<8;row++)
{
for(column=0;column<9;column++)
{
strRcv[row][column]=SBUF; //将接收缓存里面的数据存放到数组
}
switch(row)
{
case 0:
sprintf(string0,"%9s",strRcv[row]);//将接收的每个数据提取出来,以便后面对数据进行处理
//char *a1=(char*)malloc(5);
// n=strTransform(string0);
sprintf(a0,"%04d",strTransform(string0));
break;
case 1:
sprintf(string1,"%9s",strRcv[row]);
sprintf(a1,"%04d",strTransform(string1));
break;
case 2:
sprintf(string2,"%9s",strRcv[row]);
sprintf(a2,"%04d",strTransform(string2));
break;
case 3:
sprintf(string3,"%9s",strRcv[row]);
sprintf(a3,"%04d",strTransform(string3));
break;
case 4:
sprintf(string4,"%9s",strRcv[row]);
sprintf(a4,"%04d",strTransform(string4));
break;
case 5:
sprintf(string5,"%9s",strRcv[row]);
sprintf(a5,"%04d",strTransform(string5));
break;
case 6:
sprintf(string6,"%9s",strRcv[row]);
sprintf(a6,"%04d",strTransform(string6));
break;
case 7:
sprintf(string7,"%9s",strRcv[row]);
sprintf(a7,"%04d",strTransform(string7));
break;
}
}
strdata=strcat(strdata,a0);
strdata=strcat(strdata,a1);
strdata=strcat(strdata,a2);
strdata=strcat(strdata,a3);
strdata=strcat(strdata,a4);
strdata=strcat(strdata,a6);
strdata=strcat(strdata,a7);
flag=1;//产生中断标志
//RI=1;
}
作者: yzwzfyz 时间: 2017-10-31 23:45
关键是你要知道浮点数是如何保存的(存在哪里?几个字节)。
一般的浮点数有四个字节。
串行口是一个一个字节接收的,收到后组装一下(放到对应的地方),放入变量中。作者: wulin 时间: 2017-11-1 08:27
串口每次只能接收一个字节。可以添加一个数据头和数据尾用于验证,共6个字节。例如:AA xx xx xx xx 55,数据头在串口中断里判断,有效字节和数据尾放在主循环里处理。