单片机传输浮点数给android,请问单片机怎么接收从串口发送过来的浮点数?
如題,單片機(jī)接收串口發(fā)送的浮點(diǎn)數(shù),然后進(jìn)行處理,我想的是建立一個(gè)二維數(shù)組,想把浮點(diǎn)數(shù)一位一位的存到數(shù)組里,因?yàn)橐邮斩鄠€(gè)浮點(diǎn)數(shù)所以用了二維數(shù)組,可是實(shí)際發(fā)現(xiàn)是不可行的,請(qǐng)問(wèn)到底應(yīng)該怎么接收啊。以下是我寫(xiě)的串口數(shù)據(jù)接收代碼,還請(qǐng)各位大神指點(diǎn)一下,我實(shí)在是不知道該怎么辦了。
void init()//串口初始化
{
SCON=0x50;? ?? ???//串口:方式1,允許發(fā)送和接收
TMOD=0x20;? ?? ???//定時(shí)器1:模式2,8位自動(dòng)重裝模式,用于產(chǎn)生波特率
TH1=0xfd;
TL1=0xfd;
TR1=1;
SM0=0;? ?? ?? ?? ?//串口工作方式1
SM1=1;? ?? ?? ?? ?//串口工作方式1
REN=1;? ?? ?? ?? ?//允許串行口接收數(shù)據(jù)
EA=1;? ?? ?? ?? ? //開(kāi)總中斷
ES=1;? ? ? ?? ?? ?? ?? ? //打開(kāi)串口中斷
}
int strTransform(char *p)? ?//字符處理函數(shù)
{
float f = atof(p);? ?? ?//將字符轉(zhuǎn)換成浮點(diǎn)數(shù)
int n = (int)(f * 100 + 0.5);??//四舍五入
//? ? char *q = new char[strlen(p)];
//? ? strcpy(q, p);
//? ? q [6] = '\0';
//? ? printf("%s\n", q);
return n;
}
void main()
{
init();
while(1)
{
if(flag==1)
{
ES=0; //關(guān)閉串口中斷
GSM_Sent_Text_Message();
ES=1;
flag=0;//如果發(fā)送完數(shù)據(jù)之后flag不置0,則會(huì)一直處于發(fā)送狀態(tài),模塊將不停地發(fā)短信
Delay_ms(300);
//printf("sent message");
}
}
}
void ser() interrupt 4??//串口中斷服務(wù)程序
{
RI=0;//接收中斷標(biāo)志位,停止接收
for(row=0;row<8;row++)
{
for(column=0;column<9;column++)
{
strRcv[row][column]=SBUF;? ?? ?//將接收緩存里面的數(shù)據(jù)存放到數(shù)組
}
switch(row)
{
case 0:
sprintf(string0,"%9s",strRcv[row]);//將接收的每個(gè)數(shù)據(jù)提取出來(lái),以便后面對(duì)數(shù)據(jù)進(jìn)行處理
//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;//產(chǎn)生中斷標(biāo)志
//RI=1;
}
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的单片机传输浮点数给android,请问单片机怎么接收从串口发送过来的浮点数?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: linux fedora14 u盘运行,
- 下一篇: html中如何设计对话框,用纯css3和