1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111
| #define ADDTOCART_0 ( 1 << 0 ) #define PAYMENT_1 ( 1 << 1 ) #define INVENTORY_2 ( 1 << 2 ) #define ALLBITS 0xFFFFFF
EventGroupHandle_t xEventPurchase = NULL; xEventPurchase = xEventGroupCreate();
void purchaseTask(void *pvParam) {
EventBits_t uxBits;
while (1) { uxBits = xEventGroupSetBits(xEventPurchase, ADDTOCART_0); if ((uxBits & ADDTOCART_0)) { Serial.println("商品已经添加到了购物车,付款中..."); Serial.print(" Event Group Value:"); Serial.println(uxBits, BIN); }
uxBits = xEventGroupWaitBits (xEventPurchase, ADDTOCART_0 | PAYMENT_1 | INVENTORY_2, pdFALSE, pdTRUE, xTimeOut);
if ((uxBits & ADDTOCART_0) && (uxBits & PAYMENT_1) && (uxBits & INVENTORY_2)) { for (int i = 0; i < random(100, 200); i++) vTaskDelay(10);
xEventGroupClearBits(xEventPurchase, ALLBITS); uxBits = xEventGroupGetBits(xEventPurchase);
Serial.println("交易完成, RESET Event Group"); Serial.print(" Event Group Value:"); Serial.println(uxBits, BIN); Serial.println(""); }
vTaskDelete(NULL);
} }
void paymentTask(void *pvParam) {
while (1) {
EventBits_t uxBits;
uxBits = xEventGroupWaitBits (xEventPurchase, ADDTOCART_0, pdFALSE, pdTRUE, xTimeOut);
if (uxBits & ADDTOCART_0) {
for (int i = 0; i < random(100, 200); i++) vTaskDelay(10); uxBits = xEventGroupSetBits(xEventPurchase, PAYMENT_1);
Serial.println("支付宝付款完成,可以出货..."); Serial.print(" Event Group Value:"); Serial.println(uxBits, BIN);
vTaskDelete(NULL); }
} }
void inventoryTask(void *pvParam) {
EventBits_t uxBits;
while (1) {
uxBits = xEventGroupWaitBits (xEventPurchase, ADDTOCART_0 | PAYMENT_1, pdFALSE, pdTRUE, xTimeOut);
if ((uxBits & ADDTOCART_0) && (uxBits & PAYMENT_1)) {
for (int i = 0; i < random(100, 200); i++) vTaskDelay(10); uxBits = xEventGroupSetBits(xEventPurchase, INVENTORY_2);
Serial.println("仓库出货完成,快递已取货..."); Serial.print(" Event Group Value:"); Serial.println(uxBits, BIN);
vTaskDelete(NULL); }
} }
|