📄 t6004c.nc
字号:
/**
* 本程序用于测试UART0驱动,传感器为CO2 6004
* @author Majy & Lizm
* @date 2008/09/28
*/
#include "Timer.h"
#include "T6004.h"
module T6004C
{
uses
{
interface Boot;
interface Leds;
interface Timer<TMilli> as Timer;
interface AMSend;
interface Packet;
interface SplitControl as SerialControl;
interface Read<uint16_t> as CO2Reader;
}
}
implementation
{
message_t packet;
event void Boot.booted()
{
call SerialControl.start();
}
event void SerialControl.startDone(error_t error)
{
//call Timer.startOneShot(1000);
call Timer.startPeriodic(1500);
//周期性Timer,如果在AMSend.sendDone()中触发下一次Timer则不会执行
//1s周期较短,串口监听的数据重复2次,1.5S也有部分重复,2S不重复
}
event void SerialControl.stopDone(error_t error) {}
event void Timer.fired()
{
call CO2Reader.read();
call Leds.led0Toggle();
}
event void CO2Reader.readDone(error_t result, uint16_t val)
{
CO2Msg *rcm;
call Leds.led1Toggle();
rcm = (CO2Msg*)call Packet.getPayload(&packet, sizeof(CO2Msg));
if(call Packet.maxPayloadLength() < sizeof(CO2Msg))
{
return;
}
rcm -> CO2Data = val;
call AMSend.send(AM_BROADCAST_ADDR, &packet, sizeof(CO2Msg));
}
event void AMSend.sendDone(message_t* bufPtr, error_t error)
{
call Leds.led2Toggle();
//call Timer.startOneShot(1000);
return;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -