|
我这里有个燃气传感器,输出信号是0xFF,0x01,0x03,0x00,0x00,0x00,0x30,0xD4,0xF8,气体浓度=第四位的第五位*256+第五位。我有参考之前以为大佬的帖子,出结果了也没完全出,希望各位大佬可以帮我看看,附上我的程序
#include <SoftwareSerial.h>
SoftwareSerial mySerial(2, 3); // RX, TX
String comdata="";
unsigned char DEC1,DEC2;float o3Val;
int CheckSum;
byte Command[]={0xFF,0x01,0x03,0x00,0x00,0x00,0x30,0xD4,0xF8};//主动上传
void setup() {
Serial.begin(9600);
mySerial.begin(9600);
delay(1000);
mySerial.write(Command,9);
}
void loop() {
while(mySerial.available()>0){
comdata+=char(mySerial.read());
delay(2);
}
if(comdata.length()>0){
CheckSum=0x00;
for(int x=0;x<comdata.length();x++){
if(x<8)CheckSum+=comdata[x]; //计算校验和
myPtHex(comdata[x]); //16进制串口输出。接收的是什么代码。
}
CheckSum=~(CheckSum&&0xFF); //取反
if(comdata[8]==CheckSum){
DEC1=comdata[4]&&0x37;
DEC2=comdata[5];
int o3val=DEC1*256+DEC2;
o3Val=o3val/1000.0;
}
Serial.println(o3Val,2);
comdata="";
}
}
void myPtHex(int g){ // 把 g 最右边 byte 印成 Hex 两位
int a = g& 0xf0; // 左边 4 bits
a = a >> 4; // 右移 4 bits
int b = g& 0x0f; // 右边 4 bits
char c = a < 10 ? a + '0' : a + 'A' - 10;
Serial.write(c);
c = b < 10 ? b + '0' : b + 'A' - 10;
Serial.write(c);
}
最后悄悄的问一下大佬们什么叫问答式啊,可以的话给个传送门也行麻烦大家了
|
-
|