#include "pip.h" using namespace PICoutManipulators; int main(int argc, char * argv[]) { PIByteArray ba = PIByteArray::fromHex("AA11FFAA22EEAA33FF"); PIIOByteArray b; b.open(ba); PIPacketExtractor p(&b); p.setSplitMode(PIPacketExtractor::Header); p.setHeader(PIByteArray::fromHex("AABB")); // p.setFooter(PIByteArray::fromHex("AA")); p.setPayloadSize(2); p.setThreadedReadSlot([](const uchar * data, int size, void * d) { piCout << size; return true; }); p.setHeaderCheckSlot([](const uchar * src, const uchar * rec, int size) { if (*src == *rec) { if (rec[1] == 0x11) return 1; if (rec[1] == 0x22) return 3; } return -1; }); // p.setPayloadCheckSlot([](const uchar * data, int size) { // return data[1] == 0xFF; // }); CONNECTL(&p, packetReceived, ([](const uchar * data, int size){ piCout << PIByteArray(data, size).toHex(); })); p.startThreadedRead(); piMSleep(100); p.stop(); return 0; }