java 读取串口数据demo_Arduino串口输出传感器数据校验与读取转换

#include <SoftwareSerial.h>

SoftwareSerial mySerial(8,9);//RX,TX

unsigned char CH4[10]; //定义10位数组来存储传感器数据

unsigned int CH4_Check = 0;//定义校验变量

unsigned int CH4_Sum = 0; //定义前9位数据求和变量

float ch4_float = 0; //浮点型数据输出变量

void setup() {

Serial.begin(115200);

mySerial.begin(9600);

}

void loop() {

Get_CH4_Data();

delay(1000);

CH4_Data_Convert();

}

//获取10位传感器输出数据

void Get_CH4_Data(){

CH4_Sum = 0;

if(mySerial.available()){

CH4[0] = mySerial.read();

CH4[1] = mySerial.read();

// CH4[2] = mySerial.read();

if((CH4[0] == 0xFF) && (CH4[1] == 0x01)){

for(int i=2; i<10; i++){

CH4[i] = mySerial.read();

}

}

for(int b=0; b<9; b++){

CH4_Sum += CH4[b];

}

Serial.print("CH4_Sum:");

Serial.println(CH4_Sum,HEX);

Serial.print("CH4[9]:");

Serial.println(CH4[9],HEX);

}

}

//对获取到的传感器数据进行校验

boolean Data_Check(){

if(CH4_Sum > 256){

CH4_Check = CH4_Sum-256;

Serial.print("CH4_Sum-256:");

Serial.println(CH4_Check,HEX);

}

else{

CH4_Check = CH4_Sum;

Serial.print("CH4_Check:");

Serial.println(CH4_Sum,HEX);

}

if(CH4_Check == CH4[9]){

for(int a=0; a<9; a++){

Serial.print(CH4[a],HEX);

}

Serial.println(CH4[9],HEX);

return true;

}

else

return false;

}

//将校验通过的传感器数值进行转换

void CH4_Data_Convert(){

if(Data_Check() == true){

ch4_float = (CH4[4]*256 + CH4[5])*0.1;

Serial.print("CH4:");

Serial.println(ch4_float);

}

else

Serial.println("Convert failed!");

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值