本文整理汇总了C++中XBee::Receive方法的典型用法代码示例。如果您正苦于以下问题:C++ XBee::Receive方法的具体用法?C++ XBee::Receive怎么用?C++ XBee::Receive使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类XBee
的用法示例。
在下文中一共展示了XBee::Receive方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: xbeeTask
// Task to receive data from RPi
void xbeeTask(void* p) {
Serial.println("IN XBEE TASK");
while (1) {
int queueLen = 0;
int delPos = 0;
while (Serial1.available() > 0) {
unsigned char in = (unsigned char)Serial1.read();
Serial.println(in, HEX);
if (!RxQ.Enqueue(in)) {
break;
}
}
queueLen = RxQ.Size();
for (int i=0;i<queueLen;i++) {
if (RxQ.Peek(i) == 0x7E) {
unsigned char checkBuff[Q_SIZE];
unsigned char msgBuff[Q_SIZE];
int checkLen = 0;
int msgLen = 0;
checkLen = RxQ.Copy(checkBuff, i);
msgLen = xbee.Receive(checkBuff, checkLen, msgBuff);
if (msgLen > 0) {
unsigned char outMsg[MAX_RPI_MSG_SIZE];
unsigned char outFrame[Q_SIZE];
int frameLen = 0;
int packageID = (char)msgBuff[PKG_INDEX] - '0';
int ack_len = 0;
switch(packageID) {
case DEVICE_READY:
memcpy(outMsg, "ACK", 3);
deviceRdy = ack;
ack_len = 3;
break;
case NAVI_READY:
memcpy(outMsg, "ACK", 3);
naviRdy = true;
ack_len = 3;
break;
case NAVI_END:
memcpy(outMsg, "ACK", 3);
naviRdy = false;
deviceRdy = not_ack;
ack_len = 3;
break;
case OBSTACLE_DETECTED:
memcpy(outMsg, "ACK", 3);
// activate servos
if(msgBuff[9] == 'L')
Serial.println("left");
else
Serial.println("right");
// str = msgBuff[10];
//writeToActuator(left,right);
ack_len = 3;
break;
default:
// raise error ?
break;
}
frameLen = xbee.Send(outMsg, ack_len, outFrame, RPI_ADDR);
Serial1.write(outFrame, frameLen);
i += msgLen;
delPos = i;
}
else {
if (i > 0) {
delPos = i-1;
}
}
}
}
RxQ.Clear(delPos);
vTaskDelay(200);
}
}