하 이 얼 에어컨 리모콘 YR - M10 디 코딩 테스트
4504 단어 싱글 칩 마이크로컴퓨터arduino
선배 님 이 쓰 신 스티커 를 봤 어 요.
1. 하 이 얼 벽걸이 에어컨 적외선 리모콘 코드 를 해독 하 는 내 가 보기 에는 소스 코드 가 있 구나!http://bbs.mydigit.cn/read.php?tid=1152024
2. 하 이 얼 에어컨 리모콘 코드 분석http://bbs.mydigit.cn/read.php?tid=2637581
Luckily, 첫 번 째 편 은 YR - M10 의 협의 설명 입 니 다.알뜰 살 뜰 하 다.인쇄 해서 순서대로 검증 하 다
디 코딩 클래스 쓰기
IRDataPkg.h
#ifndef _C_IRDATAPKG_H_
#define _C_IRDATAPKG_H_
#pragma once
class IRDataPkg
{
public:
int pkgLen ;
unsigned char *buf ;
IRDataPkg( void);
~IRDataPkg(void);
//
unsigned char checkCrc(); // 1 0
unsigned char first();//==0xA5// 1 0
unsigned char dataok();//first()&&checkCrc()
unsigned char temperature(); // 16-30
unsigned char button();//power 0 1 2 3 4?5?6 7 8 9 10?11 12 13
unsigned char wind_direction_v();// 0 1 2 3
unsigned char wind_speed();//0 ,3 2 1
unsigned char time_hh();//0-23
unsigned char time_mm();//0-59
unsigned char health();//0 1
unsigned char quiet();//==
unsigned char sleep();//0 1
unsigned char mode();//0 1
unsigned char electric_heat();//0 1
void writeArrayToBuf(unsigned char arr[],unsigned int len);
void writeToBuf(unsigned char byt, unsigned int id);
};
#endif // _C_IRDATAPKG_H_
IRDataPkg.cpp
#include "IRDataPkg.h"
IRDataPkg::IRDataPkg() {
this->pkgLen = 9;
this->buf = new unsigned char[pkgLen];//[0 for i in range(.bufLen)];
for (int i = 0; i < this->pkgLen - 1; i++) {
this->buf[i] = 0;
}
}
IRDataPkg::~IRDataPkg() {
delete []buf;
}
//
unsigned char IRDataPkg::checkCrc() {
unsigned char r = 0;
//
for (int i = 0; i < this->pkgLen - 1; i++) {
r += this->buf[i];
}
r = r & 0xff;
return r == buf[this->pkgLen - 1] ? 1 : 0;
}
unsigned char IRDataPkg::first() {
return 0xA5 == buf[0] ? 1 : 0;
}
unsigned char IRDataPkg::dataok() {
return (this->first()==1 && this->checkCrc()==1) ? 1 : 0;
};//first()&&checkCrc()
unsigned char IRDataPkg::temperature() {
return (buf[1] >> 4) + 16; // 16-30
}
unsigned char IRDataPkg::button() {
return (buf[1] & 0x0f);
}//power 0 1 2 3 4?5?6 7 8 9 10?11 12 13
unsigned char IRDataPkg::wind_direction_v() {
return (buf[2] >> 6) & 0x03; // 0 1 2 3
}
unsigned char IRDataPkg::wind_speed() {
return (buf[5] >> 6) & 0x03; //0 ,3 2 1
}
unsigned char IRDataPkg::time_hh() {
return (buf[2] & 0x1f); //0-23
}
unsigned char IRDataPkg::time_mm() {
return (buf[3] & 0x3f); //0-59
}
unsigned char IRDataPkg::health() {
return (buf[4] >> 5) & 0x01; //0 1
}
unsigned char IRDataPkg::quiet() {
return (buf[7] >> 6) & 0x01;
} //==
unsigned char IRDataPkg::sleep() {
return (buf[7] >> 6) & 0x01; //0 1
}
unsigned char IRDataPkg::mode() {
return (buf[6] >> 5);
}//0 1 2 3 4
unsigned char IRDataPkg::electric_heat(){
return ((buf[4] >> 6) & 0x03)?1:0; //0 1
}
void IRDataPkg::writeToBuf(unsigned char byt, unsigned int id){
if(idpkgLen){
this->buf[id]=byt;
}
}
void IRDataPkg::writeArrayToBuf(unsigned char arr[], unsigned int len) {
for (int i = 0; i < len; i++) {
this->writeToBuf(arr[i], i);
}
}
//*/
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[51 싱글 칩 마이크로컴퓨터] TFT 2.4 컬러 스크린 2 [32 * 32 문자 표시]>_<:같은 이치 로 다른 형식의 글꼴 을 표시 하려 면 해당 하 는 라 이브 러 리 를 만들어 야 합 니 다. 예 를 들 어 gb 3232 의 한자 라 이브 러 리 가 있 습 니 다: GB 3232. >_<:지난 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.