Hirdetés

Új hozzászólás Aktív témák

  • fpeter84

    senior tag

    Sziasztok ismét!

    Írtam egy saját lib-et kwp1281 protokol olvasáshoz, ami egymaga tökéletesen működik. A szépséghibája, hogy úgy tudtam megoldani a nem blokkoló és timeout-ot is figyelő adatgyűjtést a sorosportról, hogy egy globális rxbufferbe gyűjtögeti az információkat. Emiatt viszont ha egy második instance-ot is szeretnék inicializálni belőle, akkor az ugye ugyanabba az rxbufferbe dolgozna és szétgányolnák egymás adatait...

    Csináltam egy egyszerű tesztlibet, amiben látszik hogy mi a problémám... Ezt hogyan illik feloldani, hogyan kellene úgy gyűjtenem egymástól függetlenül az adatokat hogy ne írjanak egymásra?

    test_lib.ino
    #include <test_lib.h>
    test_lib          instance0;
    test_lib          instance1;
    void setup() {
      Serial.begin(115200);
      instance0.test_print();
      instance1.test_print();
      instance0.test_input(1,2,3,4,5,6,7,8);
      instance1.test_input(8,7,6,5,4,3,2,1);
      instance0.test_print();
      instance1.test_print();
    }
    void loop() {
    }

    test_lib.h
    #include <Arduino.h>
    class test_lib
    {
    public:
      void test_input(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7);
      void test_print();
    };

    test_lib.cpp
    #include "test_lib.h"
    uint8_t testbuff[8];
    void test_lib::test_input(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7) {
      testbuff[0] = d0;
      testbuff[1] = d1;
      testbuff[2] = d2;
      testbuff[3] = d3;
      testbuff[4] = d4;
      testbuff[5] = d5;
      testbuff[6] = d6;
      testbuff[7] = d7;
    }
    void test_lib::test_print() {
      Serial.print(testbuff[0]); Serial.print(" ");
      Serial.print(testbuff[1]); Serial.print(" ");
      Serial.print(testbuff[2]); Serial.print(" ");
      Serial.print(testbuff[3]); Serial.print(" ");
      Serial.print(testbuff[4]); Serial.print(" ");
      Serial.print(testbuff[5]); Serial.print(" ");
      Serial.print(testbuff[6]); Serial.print(" ");
      Serial.println(testbuff[7]);
    }

    A program eredménye ugye az, hogy 2x kiírja a 8 7 6 5 4 3 2 1 sort ahelyett, hogy 1 2 3 4 5 6 7 8 és 8 7 6 5 4 3 2 1 lenne a végeredmény...

    [ Szerkesztve ]

Új hozzászólás Aktív témák