开发环境的搭建以及应用工程的创建方法在这里不再赘述,可参考笔者文章《钛极OS(TiJOS)物联网操作系统之初体验》或访问钛极OS(TiJOS)系统官方发布的教程☞钛极OS(TiJOS)应用开发环境搭建
功能实现解码红外遥控编码,编码方式为NEC码,并将遥控编码在屏幕上显示(支持重复码的接收显示)。
硬件准备TiKit开发板<——连接——>TiOLED_UG2864显示模块
SCL <——连接——>SCL
SDA <——连接——>SDA
3.3V <——连接——>VCC
GND <——连接——>GND
===================================
TiKit开发板<——连接——>TiVS1838BNEC红外接收模块
PIN3 <——连接——>OUT
3.3V <——连接——>VCC
GND <——连接——>GND
===================================
程序编写在Eclipse中新建TiJOS Application工程,编写JAVA代码如下:
import java.io.IOException;
import tijos.framework.devicecenter.TiGPIO;
import tijos.framework.devicecenter.TiI2CMaster;
import tijos.framework.sensor.infrared.ITiVS1838BNECEventListener;
import tijos.framework.sensor.infrared.TiVS1838BNEC;
import tijos.framework.transducer.led.TiOLED_UG2864;
import tijos.util.Delay;
class DecodingEventListener implements ITiVS1838BNECEventListener {
private TiOLED_UG2864 _oled;
public DecodingEventListener(TiOLED_UG2864 oled) {
this._oled = oled;
}
/**
* 接收事件处理
*/
public void cmdReceived(TiVS1838BNEC arg0) {
try {
_oled.print(1, 0, "ADDR:"+arg0.getAddress());
_oled.print(2, 0, "CODE:"+arg0.getCommand());
_oled.print(3, 0, "REPEAT:No ");
}
catch(IOException e) {
e.printStackTrace();
}
}
/**
* 接收重复事件处理
*/
public void cmdRepeat(TiVS1838BNEC arg0) {
try {
_oled.print(3, 0, "REPEAT:Yes");
}
catch(IOException e) {
e.printStackTrace();
}
}
}
/**
* 解码红外遥控编码,编码方式为NEC码,并将遥控编码在屏幕上显示(支持重复码的接收显示)。
*
* @author crashMaker
*
*/
public class Decoding {
public static void main(String[] args) {
try {
//定义要使用的I2C接口
int i2cPort = 0;
//定义要使用的GPIO接口和PIN资源
int goioPort = 0;
int outPin = 3;
//打印日志
System.out.println("This is a infrared decoding test.");
//分配I2C和GPIO资源
TiI2CMaster i2c = TiI2CMaster.open(i2cPort);
TiGPIO gpio = TiGPIO.open(goioPort, outPin);
//绑定资源到实例,完成与硬件的映射
TiOLED_UG2864 oled = new TiOLED_UG2864(i2c, 0x78);
TiVS1838BNEC vs1838b = new TiVS1838BNEC(gpio, outPin);
//创建解码事件监听对象,并设置监听者
DecodingEventListener lc = new DecodingEventListener(oled);
vs1838b.setEventListener(lc);
//显示屏幕打开,并显示信息
oled.turnOn();
oled.clear();
oled.print(0, 0, "===crashMaker===");
//保证主线程不退出
while(true) {
//线程睡眠1秒
Delay.msDelay(1000);
}
}
catch(IOException e) {
e.printStackTrace();
}
}
}
文章评论(0条评论)
登录后参与讨论