Följ

Kodexempel Tarts BeagleBone Black

Example BeagleBone Black Program Code

#include “Tarts.h”

#include “TartsStrings.h”

 

#define GATEWAY_ID  “T08KN4”

#define SENSOR_ID   “T08L10”

 

/**********************************************************************************

*BEAGLEBONE BLACK PLATFORM-SPECIFIC DEFINITIONS

*********************************************************************************/

#ifdef BB_BLACK_ARCH

#define GATEWAY_CHANNELS      0xFFFFFFFF // All Channels

#define GATEWAY_UARTNUMBER    1          //<<your UART Selection>>

#define GATEWAY_PINACTIVITY   P9_23      //<<your Activity Pin location>>

#define GATEWAY_PINPCTS       P8_26      //<<your PCTS Pin location>>

#define GATEWAY_PINPRTS       P8_10      //<<your PRTS Pin location>>

#define GATEWAY_PINRESET      P8_12      //<<your Reset Pin location>>

#endif

 

/**********************************************************************************

*Global Variables

*********************************************************************************/

int AppCalls = 0;   //Keyboard Read Thread callback variable

 

/**********************************************************************************

*Tarts Events

*********************************************************************************/

void onGatewayMessageEvent(const char* id, int stringID){

printf(“TARTS-GWM[%u]-%d: %s\n”, id, stringID, TartsGatewayStringTable[stringID]);

if(stringID == 10) printf(“ACTIVE – Channel: %d\n”, Tarts.FindGateway(GATEWAY_ID)->getOperatingChannel());

}

void onSensorMessageEvent(uint32_t id, Datum* datumList, int countSensorMessage* msg){
printf(“TARTS-SEN[%u]: RSSI: %d dBm, Battery Voltage: %d.%d VDC, Data: “, idmsg->ID, msg->RSSI, msg->BatteryVoltage/100, msg->BatteryVoltage%100);
for(int i=0; iDatumcCount; i++){
if(i != 0) printf(” || “);
printf(“%s | %s | %s”, msg->DdatumList[i].Name, msg->DdatumList[i].Value, msg->DdatumList[i].FormattedValue);
}
printf(“\n”);
}

}

/**********************************************************************************

* Keyboard Thread and Arduino-like setup / loop code

*********************************************************************************/

TARTS_THREAD(AppKeyboardReadThread){

char rxchar = 0;

while(1){

std::cin >> rxchar;

if(rxchar == ‘q’) AppCalls = 1;

rxchar = 0;

}

return 0; //Here to keep the function happy

}

 

int setup() {

printf(“TARTs Basic application running…”);

 

//Prepare all the call-back functions

Tarts.RegisterEvent_GatewayMessage(onGatewayMessageEvent);

Tarts.RegisterEvent_SensorMessage(onSensorMessageEvent);

printf(“All Event Handlers Registered.\n”);

 

//Register Gateway

#ifdef BB_BLACK_ARCH

if(!Tarts.RegisterGateway(TartsGateway::Create(GATEWAY_ID, GATEWAY_CHANNELS, GATEWAY_UARTNUMBER, GATEWAY_PINACTIVITY, GATEWAY_PINPCTS, GATEWAY_PINPRTS, GATEWAY_PINRESET))){

#else

if(!Tarts.RegisterGateway(TartsGateway::Create(GATEWAY_ID))){

#endif

printf(“TARTs Gateway Registration Failed!\n”);

return 1;

}

 

//Lastly Register All Sensors

if(!Tarts.RegisterSensor(GATEWAY_ID, TartsTemperature::Create(SENSOR_ID))){

Tarts.RemoveGateway(GATEWAY_ID);

printf(“TARTs Sensor Registration Failed!\n”);

return 2;

}

 

if(TARTS_THREADSTART(AppKeyboardReadThread) != 0){

printf(“Unable to start Keyboard Read Thread!”);

Tarts.RemoveGateway(GATEWAY_ID);

return 3;

}

 

printf(“–Press q to exit–\n\n”);

return 0;

}

 

void loop() {

Tarts.Process();

if(AppCalls == 1){

AppCalls = 0;

Tarts.RemoveGateway(GATEWAY_ID);

exit(0);

}

}

 

/**********************************************************************************

* Execution entry point for this application

*********************************************************************************/

//Main Application Loop

int main(void){

if(setup() != 0) exit(1);

while(1){

loop();

TARTS_DELAYMS(100);//Allow System Sleep to occur

}

}

Var denna artikel till hjälp?
0 av 0 tyckte detta var till hjälp
Har du fler frågor? Skicka en förfrågan

Kommentarer