jy61 树莓派_求助!! 关于JY-61模块的程序使用

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

发现JY61例程里面如果加一个程序执行了几次的小计算就会导致串口的数据无法正常的输出,感觉是随机输出的,求大神指点,是因为缓存区的原因吗,以下是代码和结果

volatile int jishu = 0;//jishu

unsigned char Re_buf[11],counter=0;

unsigned char sign=0;

float a[3],w[3],angle[3],T;

void setup() {

// initialize serial:

Serial.begin(9600);

Serial2.begin(115200);

}

void loop() {

//if(flagZD == 1) checkSerial2();

Distance_angle();

}

void Distance_angle(){

jishu++;

Serial.print(jishu);Serial.print(" ");

if(sign)

{

sign=0;

if(Re_buf[0]==0x55) //检查帧头

{

switch(Re_buf [1])

{

case 0x51:

a[0] = (short(Re_buf [3]<<8| Re_buf [2]))/32768.0*16;

a[1] = (short(Re_buf [5]<<8| Re_buf [4]))/32768.0*16;

a[2] = (short(Re_buf [7]<<8| Re_buf [6]))/32768.0*16;

T = (short(Re_buf [9]<<8| Re_buf [8]))/340.0+36.25;

break;

case 0x52:

w[0] = (short(Re_buf [3]<<8| Re_buf [2]))/32768.0*2000;

w[1] = (short(Re_buf [5]<<8| Re_buf [4]))/32768.0*2000;

w[2] = (short(Re_buf [7]<<8| Re_buf [6]))/32768.0*2000;

T = (short(Re_buf [9]<<8| Re_buf [8]))/340.0+36.25;

break;

case 0x53:

angle[0] = (short(Re_buf [3]<<8| Re_buf [2]))/32768.0*180;

angle[1] = (short(Re_buf [5]<<8| Re_buf [4]))/32768.0*180;

angle[2] = (short(Re_buf [7]<<8| Re_buf [6]))/32768.0*180;

T = (short(Re_buf [9]<<8| Re_buf [8]))/340.0+36.25;

/* Serial.print("a:");

Serial.print(a[0]);Serial.print(" ");

Serial.print(a[1]);Serial.print(" ");

Serial.print(a[2]);Serial.print(" ");

Serial.print("w:");

Serial.print(w[0]);Serial.print(" ");

Serial.print(w[1]);Serial.print(" ");

Serial.print(w[2]);Serial.print(" ");

Serial.print("angle:");

Serial.print(angle[0]);Serial.print(" ");

Serial.print(angle[1]);Serial.print(" ");*/

Serial.println(angle[2]); //Serial.print(" ");

delay(1000);

// Serial.print("T:");

// Serial.println(T);

break;

}

}

}

//flagZD=1;

while ( Serial2.available()) {

//char inChar = (char)Serial.read(); Serial.print(inChar); //Output Original Data, use this code

Re_buf[counter]=(unsigned char) Serial2.read();

//Serial.print("/"); Serial.print(counter);Serial.print(" "); Serial.print(Re_buf[counter]);Serial.print(" ");

if(counter==0&&Re_buf[0]!=0x55) return; //第0号数据不是帧头

counter++;

if(counter==11) //接收到11个数据

{

counter=0; //重新赋值,准备下一帧数据的接收

sign=1;

}

}

}

已标记关键词 清除标记
表情包
插入表情
评论将由博主筛选后显示,对所有人可见 | 还能输入1000个字符
相关推荐
©️2020 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页