- List item
上代码
#define RXD2 18
#define TXD2 19
char hxe[4] = {0x80,0x06,0x02,0x78};//单次测量
char hxe2[4] = {0x80,0x06,0x03,0x77};//连续测量
float jili; //距离
float top = 1.8; //上限
float bottom = 0.35; //下限
void Callback(){
String Collect_Data = “”; //定义一个String类型的变量
//char *data[];
while(Serial2.available()){ //用While判断缓冲区是否有内容
Collect_Data += char(Serial2.read()); //取出缓冲区内容
delay(20); // 这里是重点,如不加一次只收一个字符。
}
Serial.println(Collect_Data); //输出取出的内容
if (Collect_Data[6] = 46){
jili = (Collect_Data[3]-48)*100
+ (Collect_Data[4]-48)*10
+ (Collect_Data[5]-48)
+ (Collect_Data[7]-48)*0.1
+ (Collect_Data[8]-48)*0.01
+ (Collect_Data[9]-48)*0.001;
Serial.println(jili,3);
}
if (bottom>jili || jili>top){
Serial.println(“超界”);
}
Collect_Data = “”; //清空内容
}
void setup() {
Serial.begin(115200);
// Serial1.begin(9600, SERIAL_8N1, RXD1, TXD1);
Serial2.begin(9600, SERIAL_8N1, RXD2, TXD2);
Serial2.onReceive(Callback); //定义串口中断函数
Serial2.print(hxe2);
}
void loop() { //当Serial2收到数据时,通过Serial串口显示出来
// while (Serial2.available()) {
// Serial.println(char(Serial2.read()));
// }
}