char bufferIn[256]; if (recv(s, bufferIn, sizeof(bufferIn), 0)) == SOCKET_ERROR) { // komunikat o...
Serwis znalezionych hasełOdnośniki
- Smutek to uczucie, jak gdyby się tonęło, jak gdyby grzebano cię w ziemi.
- Na obudowie modułu znajduje się osiem diod informujących o stanie modułu, pracy serwonapędów i komunikacji z nimi, port RS232 służący do aktualizacji...
- tylko jeden, podczas gdy żydowscy komuniści dostarczyli, jakże licznych zbrodniarzy, wcale nie mniejszych pod względem rozmiarów zbrodniczości od...
- skrzyżowaniu ponurych permabetonowych korytarzy o ścianach wyłożonych plastalo- - Nastawiony na nadawanie komunikator jest? - zapytał...
- Je¿eli nie chcesz aby pojawia³ siê ten komunikat, musisz ustawiæ w pliku php...
- Komunikaty obsługiwane przez CyberCash zawarte są w tablicy 17...
- komunistyczn¹ dyktaturê W³odzimierza Lenina w RosjiSowieckiej...
- Operacje wejścia-wyjścia Zmienne typu int, double i char są zmiennymi arytmetycznymi, przystosowanymi odpowiednio do przechowywania...
- Faktycznie, celne pytanie — myÅ›li Katarzyna...
- Ponad połowa badanej populacji charakteryzuje się typem samooceny adekwatnej...
- and be so angry that they’d take it out on anyone who happened to have been around at the time...
Smutek to uczucie, jak gdyby się tonęło, jak gdyby grzebano cię w ziemi.
4.4. Funkcja recvfrom()
Funkcja odbiera pakiet danych przychodzący z gniazda określonego
deskryptorem s i przechwytuje informacje o nadawcy. Dane odebrane
umieszczane sÄ… w buforze wskazywanym przez buf.
int recvfrom(
__in SOCKET s,
__out char *buf,
__in int len,
__in int flags,
__out struct sockaddr *from,
__inout_opt int *fromlen
);
Wskaźnik buf wskazuje na bufor z danymi odebranymi, parametr len określa
rozmiar bufora (w bajtach), flags jest znacznikiem określającym sposób
odbierania danych, wskaźnik from wskazuje na strukturę z adresem gniazda od
którego dane są odbierane, fromlen jest rozmiarem (w bajtach) tego wskaźnika.
Listing 4.4. Przykładowe użycie funkcji recvfrom()
//---------------------------------------------------
WSADATA wsaData;
SOCKET s;
sockaddr_in recvAddr;
//...
char bufferIn[256];
sockaddr_in senderAddr;
int senderAddrSize = sizeof(senderAddr);
//...
122
Bluetooth. Praktyczne programowanie
result = bind(s, (SOCKADDR *)& recvAddr,
sizeof(recvAddr));
if (result != 0) {
wprintf(L"błędne wykonanie bind %d\n",
WSAGetLastError());
return 1;
}
//...
wprintf(L"dane odbierane...\n");
result = recvfrom(s, bufferIn, strlen(bufferIn), 0,
(SOCKADDR *) & senderAddr,
&senderAddrSize);
if (result == SOCKET_ERROR) {
wprintf(L"błędne wykonanie recvfrom %d\n",
WSAGetLastError());
}
//---------------------------------------------------
4.5. Komendy AT
Komendy AT to zestaw poleceń, które po raz pierwszy zastosowała w swoich
urządzeniach (w celu ujednolicenia obsługi sprzętu, z którym miał
współpracować komputer) znana z produkcji modemów firma Hayes. Pierwotnie
polecenia te miały służyć jedynie do sterowania pracą modemów analogowych.
Jednak wraz z upowszechnieniem się technologii GSM bardzo szybko zostały
zaadoptowane do obsługi modemów wbudowanych w telefony komórkowe.
Współcześnie każde urządzenie bazujące na technologii GSM posiada
wbudowany interpreter komend AT i wykonuje je zgodnie z normą przyjętą
przez producentów. Oznacza to, iż implementacje komend AT dla konkretnych
urządzeń mogą nieznacznie różnić się pomiędzy sobą, co nie zmienia faktu, iż
zarówno składnia komend oraz wynik ich realizacji są znormalizowane [20]. Na
rysunku 4.2 pokazano ogólną klasyfikacje komend AT.
Rysunek 4.2. Klasyfikacja poleceń AT
Tak jak pokazano to na rysunku 4.2 komendy AT dzielÄ… siÄ™ na cztery
podstawowe grupy:
Transmisja danych
123
• Polecenia typu Test (testowe) – sÅ‚użą do sprawdzania, czy dana komenda jest obsÅ‚ugiwana przez urzÄ…dzenie, czy też nie.
składnia: AT<polecenie>=?
• Polecenia typu Read (zapytania) – sÅ‚użą do uzyskiwania informacji na temat
aktualnych ustawień urządzenia zewnętrznego.
składnia: AT<polecenie>?
• Polecenia typu Set (zestawy poleceÅ„) – sÅ‚użą do modyfikowania wybranych
parametrów ustawień urządzenia zewnętrznego.
składnia: AT<polecenie>=wartość1, wartość2, …, wartośćN
• Polecenia typu Execution (wykonywalne) – sÅ‚użą do przesyÅ‚ania rozkazów
wykonania konkretnej operacji przez urządzenie zewnętrzne.
składnia: AT<polecenie>=parametr1, parametr2, …, parameteN
Zgodnie ze standardem, każde polecenie rozpoczyna się od prefiksu AT i
kończy znakiem powrotu karetki CR (13 lub \r). Komenda nie będzie
realizowana dopóty, dopóki urządzenie GSM nie odbierze znaku CR. Przyjęcie
komendy do realizacji przez urzÄ…dzenie potwierdzane jest znakiem nowej linii
LF (10 lub \n). Więcej informacji na temat komend AT można znaleźć w
publikacji J. Bogusza [20] oraz na stronie internetowej [21].
Na listingu 4.5 zaprezentowano przykładowy program kontrolujący w sposób