![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 7 Pomógł: 0 Dołączył: 21.01.2010 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Prosiłbym o pomoc w kwestii wysyłania pakietów, ramek za pomocą php i funkcji socket_write. Posiadam urządzenia podpięte pod TCP/IP, aby się z nim skomunikować muszę przesłać mu odpowiednią paczkę aby urządzenie mi odpowiedziało. Mianowicie pierwsze 4 bity to komenda, następne bity to zera(długość ramki 552(zawsze!)), na 3 ostatnich bitach od końca jest kolejno suma kontrolna 1 i suma kontrolna 2 i zamknięcie ramki zawsze 13 (DEC) ostatni bit. Gdy wpisuję mu wartości w HEX "z palca", tak jak przykład poniżej, wszystko działa poprawnie, urządzenie odpowiada i jest wszystko OK. Jednak gdy w grę wchodzą zmienne jest już problem. DZIAŁAJĄCY PRZYKŁAD:
Pięknie urządzenie odpowiada danymi, wszystko działa. Problem gdy zamiast wartości np. kończącej całą ramkę czyli: $ping .= "\xD6\x3\x0D"; zastąpię zmiennymi, czyli: $ping .= $suma_kontrolna0.$suma_kontrolna1.'\x0D ; już urządzenie nie rozumie i wywala się na plecy, a obie te zmienne wyglądają idenczycznie w postaci: "\xD6\x3\x0D". OK, może on odbiera to jako string pomyślałem. Kolejna próba:
Powyższa próba również zakończyła się niepowodzeniem, czy wygładało to tak: sprintf("\x%X", "00");, czy tak sprintf("%X", "00");, czy tak sprintf("\\x%X", "00"); za każdym razem błąd komunikacji. Prosiłbym o jakiekolwiek sugestie, pewnie ktoś walczył z tym problemem. Problemem jest przesyłanie socket_write ramki w postaci HEX. |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 677 Pomógł: 89 Dołączył: 31.08.2003 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Do przesyłania danych binarnych zdecydowanie wygodniej użyć pack. To, co jest w kodach powyżej to jakaś rzeźba i nawet nie wiadomo o co tam chodzi...
-------------------- |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 7 Pomógł: 0 Dołączył: 21.01.2010 Ostrzeżenie: (0%) ![]() ![]() |
Do przesyłania danych binarnych zdecydowanie wygodniej użyć pack. To, co jest w kodach powyżej to jakaś rzeźba i nawet nie wiadomo o co tam chodzi... No spoko, funkcja pack, czyli w jaki sposób ma wyglądać paczka?
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 21.08.2025 - 19:33 |