/// przydatne fragmenty kodu: ///================================================================ /// dla programu pojazdu: ///================================================================ #define ATTACH_POINT "kanal" #define ATTACH_POINT_ZASOBY "zasoby" /// definicja struktur przesyłanych wiadomości - zaróno tych do wizji, jak i tych do zasobów typedef struct { ble ble ble.... } struktura_do_czegos; /// deklaracje potrzebnych zmiennych int fd_wizja; int fd_zasoby; /// sprawdzenie, czy istnieje połączenie z wizją if ((fd_wizja = name_open(ATTACH_POINT, 0)) == -1) { awaria_wizji(); return EXIT_FAILURE; } /// sprawdzenie, czy istnieje połączenie z zasobami if ((fd_zasoby = name_open(ATTACH_POINT_ZASOBY, 0)) == -1) { awaria_zasobow(); return EXIT_FAILURE; } .... /// potem wysyłamy komunikaty do serwera zasobów, /// i za każdym razem sprawdzamy, czy mamy połaczenie z zasobami /// to jest instrukcja, która wysyłając pytanie, jednocześnie czeka na odpowiedz if (MsgSend(fd_zasoby, &Struktura_pytania, sizeof(Struktura_pytania), &Struktura_odpowiedzi, sizeof(Struktura_odpowiedzi)) == -1) { awaria_zasobow(); return -1; } ... /// analizujemy odpowiedz,w zalezności od tego, co otrzymaliśmy od zasobów - kończymy pracę itp ... /// teraz wysyłamy komunikaty do serwera wizji, /// i za każdym razem sprawdzamy, czy mamy połaczenie z wizją /// to jest instrukcja, która wysyłając pytanie, jednocześnie czeka na odpowiedz /// - ale my odpowiedzi nie potrzebujemy, dlatego NULL'e if (MsgSend(fd_wizja, &Struktura_pytania_do_wizji, sizeof(Struktura_pytania_do_wizji), NULL, 0) == -1) { awaria_wizji(); return -1; } /// gdzies w programie, na każdej 'ścieżce' powinno się znaleźć: name_close(fd_zasoby); name_close(fd_wizja); ///================================================================ /// dla programu wizualizacji: ///================================================================ #define ATTACH_POINT "kanal" typedef struct { ble ble ble.... } struktura_do_czegos; name_attach_t *attach; /// tworzymy punkt dostępu if ((attach = name_attach(NULL, ATTACH_POINT, 0)) == NULL) { return EXIT_FAILURE; } /// malujemy skrzyżowanie etc... /// a potem komunikacja już za pomocą kolejki komunikatów: MsgReceive (...); MsgReply (...);