Toon posts:

Protocol Maken

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik ben ermee bezig om een protocol te maken in c++.

Het protocol bestaat uit blokken die in een state machine geimplementeerd zijn.
Dit wil ik dus in classes implementeren.

Weet er iemand nog goede links of boeken over het implementeren van statemachines in c++ of over het maken van protocolen in c++?

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 22-08 13:19

.oisyn

Moderator Devschuur®

Demotivational Speaker

Je zou natuurlijk wat meer info kunnen geven... wat voor protocol je wilt maken, en waar je de statemachines voor wilt gebruiken, etc.
Ook zou je google eens kunnen raadplegen

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 13-08 16:46

curry684

left part of the evil twins

Idd zo kunnen we er niets mee. Is het een communicatieprotocol? Op welk communicatiemechanisme gebruik je het? Wat voor data wil je? Moet er nested en/of variable length data gecommuniceerd worden?

Professionele website nodig?


Verwijderd

Topicstarter
Het is een Espa 4.4.4 protocol, wordt gebruikt in verpleeghuizen voor het communicatie tussen pagers en een centraal post. Het is een master-slave multidrop protocol. Hiermee wordt er tussen een zender en pager(ontvanger) berichten van maximaal 40 charachters gestuurd. De statemachine is als ware het protocol zelf.

Een voorbeeld: Idle State, Poll State, Send State, Receive State.

Een applicatie pollt een andere applicatie om te vragen of hij iets heeft om te zenden naar een pager. Zo ja dan gaat de zender naar de send state, en de ontvanger naar de receive state.

Mijn vraag is dus, weten jullie van manieren waarop ik dit in c++ kan implementeren.

Zou ook als een switch statement op te lossen zijn, maar dat wil ik niet doen vanwege de niet object georienteerd aanpak daarvan.

Alvast bedankt.

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 13-08 16:46

curry684

left part of the evil twins

Wat is er niet OOP aan een switch? :?

Professionele website nodig?


  • LordLarry
  • Registratie: Juli 2001
  • Niet online

LordLarry

Aut disce aut discede

Een switchs is een wezen een hoop if-jes achterelkaar. Met OOP is het mogelijk om geheel zonder if-jes te werken en wordt door sommige mensen geprefereerd. In het geval van een zeer modulair opgezet protocol kan ik me er wel wat bij voorstellen. Dit zou kunnen gaan via polymorphisme of een geschikte design pattern.

We adore chaos because we like to restore order - M.C. Escher


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 22-08 13:19

.oisyn

Moderator Devschuur®

Demotivational Speaker

Zoek naar het state design pattern
Het idee is dat je per state een klasse maakt met implementaties van verschillende methoden. In je hoofdklasse heb je dan een referentie naar zo'n stateklasse

C++:
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
struct State
{
    virtual void doeIets () = 0;
};

struct MyState1
{
    void doeIets ()
    {
        std::cout << "state 1" << std::endl;
    }
};

struct MyState2
{
    void doeIets ()
    {
        std::cout << "state 2" << std::endl;
    }
};

class MyClass
{
private:
    State * state;

public:
    enum state_t { STATE1, STATE2 };

    MyState () : state (0)
    {
        enterState (STATE1);
    }

    ~MyState ()
    {
        if (state)
            delete state;
    }

    void setState (state_t s)
    {
        if (state)
            delete state;
        switch (s)
        {
        case STATE1:
            state = new MyState1 ();
            break;
        case STATE2:
            state = new MyState2 ();
            break;
        }
    }

    void doeIets ()
    {
        state->doeIets ();
    }
};


int main ()
{
    MyClass c;

    c.doeIets ();
    c.setState (MyClass::STATE2);
    c.doeIets ();

    return 0;
}


en jawel, ook hier gebruik ik een switch :Y)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Verwijderd

Topicstarter
Hey bedankt, zoiets zocht ik dus. Het gebruik van een switch kan natuurlijk wel, maar ik heb ook state machines gezien die gewoon een switch in een switch statement doen en dan wordt het toch wat rommelig vind ik.

Bedankt voor dit stukje.

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 13-08 16:46

curry684

left part of the evil twins

en jawel, ook hier gebruik ik een switch
Ik had er inderdaad nogal moeite mee om een keyword te associeren met een methodiek, is namelijk nogal onzinnig :)

(voordat iemand over goto begint: die is net zo ranzig en overbodig in C als in C++)

Professionele website nodig?

Pagina: 1