Huawei komunikacja C#

Kwestie techniczne, konfiguracja i rozwiązywanie problemów z modemami GSM (GPRS, EDGE, UMTS, HSDPA i HSUPA).

Moderator: Moderatorzy

ODPOWIEDZ
bloniak91
Początkujący użytkownik forum
Posty: 9
Rejestracja: 2014-03-20, 12:39
Lokalizacja: Warszawa

Huawei komunikacja C#

Post autor: bloniak91 »

Witam,
z modemami, routerami nie mam do czynienia na co dzień, więc szukam tutaj pomocy.
Kupiłem sobie modem Huawei e173u-2.
Napisałem prosty program w C# consolowy i okienkowy, który łączy się z COM modemu, otwiera go i ciska w niego komendą AT. Program oczekuje na odpowiedź urządzenia, gdy ją otrzyma ma ją wyświetlić, odpowiednio w consoli lub w okienku. Problem w tym, że wysyłam różne komendy AT, jednak nie otrzymałem jeszcze żadnej odpowiedzi do mojego modemiku :cry: Szukam przyczyny czemu tak się dzieję.
Komendy AT wysyłam jako STRINGI poleceniem: port.Write("AT^CPBR=?"); .
Czy ktoś może podpowiedzieć gdzie szukać rozwiązania mojego problemu?
Pozdrawiam serdecznie
Mikrokontrolery C,
Aplikacje Windows C#
Konstruowanie układów elektronicznych
Awatar użytkownika
wojteks
*** Administrator ***
Posty: 26132
Rejestracja: 2007-12-02, 11:51
Lokalizacja: PL

Re: Huawei komunikacja C#

Post autor: wojteks »

bloniak91 pisze:Szukam przyczyny czemu tak się dzieję.
Może wysyłasz na zły port, odpowiedzi pojawiają się tylko na jednym z dostępnych portów (PC UI interface czy jakoś tak).

Sprawdź jakimś terminalem (putty przykładowo) na którym porcie COM dostaniesz odpowiedź z modemu.
Nie pomagam na PW!
bloniak91
Początkujący użytkownik forum
Posty: 9
Rejestracja: 2014-03-20, 12:39
Lokalizacja: Warszawa

Re: Huawei komunikacja C#

Post autor: bloniak91 »

Dzięki za odpowiedź.
Po podłączeniu modemu pojawiają mi się 2 COMY, które widzę w menedżerze urządzeń.
Z kolei, gdy wyświetlę dostępne porty, które wyszukuję własnym programem, który napisałem żeby wyszukiwał mi własnie podłączone COM, wyświetla mi on, że po podłączeniu modemu dostępne są 3 nowe COMy! :rotfl:
Nie znam się na modemach, mało czytałem :czyta: (przyznam się bez bicia), ale wydaję mi się, że właśnie ten 3, niewidoczny jest odpowiedzialny za połączenie z internetem.
Wracając do tematu, na tych 3 COMach, które udało mi się określić, że są od modemu nie zachodzi żadna rekcja po wysłaniu komendy. Dokładniej:
na 1 z pojawiających się COM, podobnie jak i na 3 program się zawiesza, ponieważ nie może doczekać się odpowiedzi, natomiast przy 2 COM, odpowiedź jakaś następuje, program działa dalej, ale wyświetla pustą linię w konsoli (w aplikacji okienkowej puste pole tekstowe).
Dzisiaj już mi się nie chce, ale jutro sprawdzę to za pomocą putty, oraz jakiegoś podglądacza COM, czy zachodzi jakaś wymiana danych.
Pozdrawiam
Mikrokontrolery C,
Aplikacje Windows C#
Konstruowanie układów elektronicznych
ja.michal
*Mistrz bezprzewodowy*
Posty: 22031
Rejestracja: 2006-08-14, 17:59
Lokalizacja: Polska

Re: Huawei komunikacja C#

Post autor: ja.michal »

Jakie nazwy mają poszczególne interfejsy COM w managerze urządzeń?
kordirko
Specjalista bezprzewodowy-senior
Posty: 368
Rejestracja: 2012-08-01, 23:52
Lokalizacja: śląsk

Re: Huawei komunikacja C#

Post autor: kordirko »

Wklej tu ten kod.
Nie cały - wystarczą fragmenty (linie) gdzie port jest otwierany, jest zapis do portu i odczyt z portu.
Jakiej biblioteki używasz ?
Czy w tej funkcji do otwierania podaje się parametry portu (prędkość parzystość bity stopu itp)?
bloniak91
Początkujący użytkownik forum
Posty: 9
Rejestracja: 2014-03-20, 12:39
Lokalizacja: Warszawa

Re: Huawei komunikacja C#

Post autor: bloniak91 »

Tak, ustawiam prędkość, bit stopu,parzystość. Próbowałem również z różnymi prędkościami.
Korzystam z biblioteki System.IO.Ports.
Kod

Kod: Zaznacz cały

SerialPort port = new SerialPort(
            "COM13", 19200, Parity.None, 8, StopBits.One);
            port.Open();
            port.Write("AT^SPN=1\n");
            var a = port.ReadLine();
Oczywiście COMy, mają nazwę od 12 do 14 włącznie. Na wszystkich próbowałem.

[ Dodano: 2014-03-21, 07:24 ]
Przepraszam, nie widziałem postu kolegi ja.michał.
COMY nazywają się:
COM 12- Huawei Mobile Connect - 3G Application Interface,
COM 13- Huawei Mobile Connect - 3G PC UI Interface.
Tak jak wspomniałem wyżej, COM13 coś tam wysyłał na moje zapytanie, ale nie udało mi się tego odczytać.
Mikrokontrolery C,
Aplikacje Windows C#
Konstruowanie układów elektronicznych
Awatar użytkownika
Jo_gurt
Guru bezprzewodowy
Posty: 16330
Rejestracja: 2007-11-16, 21:49
Lokalizacja: Lublin

Re: Huawei komunikacja C#

Post autor: Jo_gurt »

Próbujesz czytać synchronicznie i bez pętli. Istnieje spora szansa, że po prostu nie odczytujesz odpowiedzi w odpowiednim momencie.
bloniak91
Początkujący użytkownik forum
Posty: 9
Rejestracja: 2014-03-20, 12:39
Lokalizacja: Warszawa

Re: Huawei komunikacja C#

Post autor: bloniak91 »

Dobra, wrzuciłem odczytywanie w nieelegancką, nieskończoną pętlę i coś tam łapie, ale nie za każdym razem.
Następne pytanie:
Czy to prawda, że każda komenda AT musi się kończyć znakiem nowej linii żeby byłą odebrana przez urządzenie?
Na komendę:
AT^SPN=1 - Wyświetlenie tekstu, który w telefonach pojawia się zamiast nazwy operatora sieci, np. "Orange" w niektórych starszych kartach, "PLAY" - również w zależności ok karty SIM, czy też "wpMobi", które pojawiało się na kartach tego operatora.
Jakiej odpowiedzi powinienem się spodziewać? Otrzymuję ^RSSI:17 lub ^RSSI:20.
Mikrokontrolery C,
Aplikacje Windows C#
Konstruowanie układów elektronicznych
Awatar użytkownika
Jo_gurt
Guru bezprzewodowy
Posty: 16330
Rejestracja: 2007-11-16, 21:49
Lokalizacja: Lublin

Re: Huawei komunikacja C#

Post autor: Jo_gurt »

bloniak91 pisze:Dobra, wrzuciłem odczytywanie w nieelegancką, nieskończoną pętlę i coś tam łapie, ale nie za każdym razem.
Zrób asynchronicznie, w osobnym wątku i będzie to działać poprawnie.
bloniak91
Początkujący użytkownik forum
Posty: 9
Rejestracja: 2014-03-20, 12:39
Lokalizacja: Warszawa

Re: Huawei komunikacja C#

Post autor: bloniak91 »

A jeszcze z innej beczki.
Mój modem ma podstawowy program do obsługi- można w nim wybierać połączenia głosowe, wysyłać smsy, zapisywać numery itd.
Gdy podłączam urządzenie, z automatu ten program startuje i blokuje wejścia do COMów modemu. Jest pewien moment, po włączeniu modemu i przed odpaleniem się tego programu, że gdy uruchomię swój program, komendy "działają". Przykładowo:
wysyłam komendę: ATD 601123123; Program Mobile Partner włącza się i dopóki nie zamknę swojego, działającego programu to nie ma żadnej reakcji. Po zamknięciu mojej appki, dzięki uprzejmości "Mobile Partner" oczekiwane połączenie w końcu się nawiązuje.
Jeżeli odinstaluje Mobile Partner, system nie widzi COM modemu, więc co mam zrobić, żeby ten program nie blokował mojego? Czy do nawiązania połączenia wystarczy w/w komenda? Dlaczego dopiero Mobile Partner potrafi nawiązać to połączenie?
Zrób asynchronicznie, w osobnym wątku i będzie to działać poprawnie.
Co przez to rozumiesz?
Czy istnieje jakaś komenda inicjująca modem?

[ Dodano: 2014-03-21, 14:06 ]
Ok, wszystko w miarę hula. Do każdej komendy należy dodać znak powrotu karetki \r.
Mikrokontrolery C,
Aplikacje Windows C#
Konstruowanie układów elektronicznych
kordirko
Specjalista bezprzewodowy-senior
Posty: 368
Rejestracja: 2012-08-01, 23:52
Lokalizacja: śląsk

Re: Huawei komunikacja C#

Post autor: kordirko »

bloniak91 pisze:Na komendę:
AT^SPN=1 - Wyświetlenie tekstu, który w telefonach pojawia się zamiast nazwy operatora sieci, np. "Orange" w niektórych starszych kartach, "PLAY" - również w zależności ok karty SIM, czy też "wpMobi", które pojawiało się na kartach tego operatora.
Jakiej odpowiedzi powinienem się spodziewać? Otrzymuję ^RSSI:17 lub ^RSSI:20.
Zapewne nikt ci nie powie, trzeba eksperymentować.
U mnie to działa tak (karta z Orange, modem E3131).

Kod: Zaznacz cały

AT^SPN=0
Odpowiedź: 
AT^SPN=0

^SPN:0,0,Orange

OK

AT^SPN=1
Odpowiedź: 
AT^SPN=1

^SPN:0,0,Orange

OK
Awatar użytkownika
YaHooo
Guru bezprzewodowy
Posty: 17761
Rejestracja: 2008-01-02, 14:38
Lokalizacja: Białystok

Re: Huawei komunikacja C#

Post autor: YaHooo »

bloniak91 pisze: Jakiej odpowiedzi powinienem się spodziewać? Otrzymuję ^RSSI:17 lub ^RSSI:20.
To jest informacja wysyłana automatycznie przez modem. Informuje ona o aktualnej wartości siły sygnału jaką modem odbiera. Ogólnie to Huawei'e wysyłają jeszcze kilka innych takich poleceń, niektóre się pojawiają podczas nawiązanego połączenia z internetem.
bloniak91 pisze: Ok, wszystko w miarę hula. Do każdej komendy należy dodać znak powrotu karetki \r.
Ogólnie to się konfiguruje za pomocą rejestru S3 jak wygląda znak kończący polecenie.
bloniak91 pisze: Co przez to rozumiesz?
Czy istnieje jakaś komenda inicjująca modem?
Nie, to jest sposób komunikacji z modemem. Synchronicznie, to jest tak, że wysyłasz dane funkcją Write(), po niej wywołujesz Read() i ona czeka aż modem odpowie i wtedy program idzie dalej. W przypadku tym jeśli wywołujesz komendę która trwa długo (np. wyszukiwanie operatorów może trwać 20s) to program zamarza i ma się wrażenie, że się zawiesił.

Metoda asynchroniczna polega na tym, że piszesz do modemu metodą Write() i koniec. Masz dodatkowo jakiś mechanizm (np. zdarzenie czy drugi wątek) które jest wywoływane w przypadku gdy modem wyśle dane. Wtedy na czas oczekiwania na dane program nie zawiesza się, ale może robić inne rzeczy.
Pozdrawiam YaHooo :)
> FAQ < > Limitowanie TTL < > Filtrowanie MAC < > Limit - miniFAQ <
> Udostępnianie połączenia internetowego iPlus w trybie Ad-hoc < > Połączenie Ad-hoc <
(iPlus7GB-30%) + (Sierra Wireless AC881) + (HP Compaq nx7300) + (200m od BTS'a) = (600kB/s)
ja.michal
*Mistrz bezprzewodowy*
Posty: 22031
Rejestracja: 2006-08-14, 17:59
Lokalizacja: Polska

Re: Huawei komunikacja C#

Post autor: ja.michal »

bloniak91 pisze: COM 12- Huawei Mobile Connect - 3G Application Interface,
To jest odpowiedzialne za komunikację AT.
bloniak91
Początkujący użytkownik forum
Posty: 9
Rejestracja: 2014-03-20, 12:39
Lokalizacja: Warszawa

Re: Huawei komunikacja C#

Post autor: bloniak91 »

Dzięki za wszystkie odpowiedzi!
Mam jeszcze pytanie odnośnie ustawienia głośnika. Gdy wykonuje połączenie, nic nie słychać. Trzeba ustawić żeby dźwięk był przenoszony na głośniki podłączone do komputera. Szukam takiej komendy w opracowaniu p. J. Bogusza, ale nic konkretnego nie mogę znaleźć. Ktoś coś wie na ten temat, jak to się ustawia?
Mikrokontrolery C,
Aplikacje Windows C#
Konstruowanie układów elektronicznych
kordirko
Specjalista bezprzewodowy-senior
Posty: 368
Rejestracja: 2012-08-01, 23:52
Lokalizacja: śląsk

Re: Huawei komunikacja C#

Post autor: kordirko »

bloniak91 pisze: Mam jeszcze pytanie odnośnie ustawienia głośnika.
ATMx i ATLx
http://leksykot.top.hell.pl/lx3/6/modem-hayes_at#ATMn
http://leksykot.top.hell.pl/lx3/6/modem-hayes_at#ATLn

Tylko że modem musi mieć wbudowany głośnik, tak jak stare fax/modemy łączące się po linii telefonicznej.
modemy GSM chyba głośników nie mają ;)

Pamiętam te czasy jak się łączyło pod 0202122 z prędkością max 50 kB,
i modem wtedy dawał takie odgłosy:
http://www.youtube.com/watch?v=gsNaR6FR ... r_embedded
Awatar użytkownika
YaHooo
Guru bezprzewodowy
Posty: 17761
Rejestracja: 2008-01-02, 14:38
Lokalizacja: Białystok

Re: Huawei komunikacja C#

Post autor: YaHooo »

kordirko pisze: modemy GSM chyba głośników nie mają ;)
A raczej na pewno ;)
Pozdrawiam YaHooo :)
> FAQ < > Limitowanie TTL < > Filtrowanie MAC < > Limit - miniFAQ <
> Udostępnianie połączenia internetowego iPlus w trybie Ad-hoc < > Połączenie Ad-hoc <
(iPlus7GB-30%) + (Sierra Wireless AC881) + (HP Compaq nx7300) + (200m od BTS'a) = (600kB/s)
bloniak91
Początkujący użytkownik forum
Posty: 9
Rejestracja: 2014-03-20, 12:39
Lokalizacja: Warszawa

Re: Huawei komunikacja C#

Post autor: bloniak91 »

kordirko pisze: ATMx i ATLx
http://leksykot.top.hell.pl/lx3/6/modem-hayes_at#ATMn
http://leksykot.top.hell.pl/lx3/6/modem-hayes_at#ATLn

Tylko że modem musi mieć wbudowany głośnik, tak jak stare fax/modemy łączące się po linii telefonicznej.
modemy GSM chyba głośników nie mają ;)
Podane komendy nie działają. Wysyłam to w ten sposób:

Kod: Zaznacz cały

 port.Write("ATM0\r");
            port.Write("ATL3\r");
            port.Write("ATD 506064617;\r");
Jeśli włączę Mobile Partner, dźwięk przenoszony jest na głośniki komputerowe, więc jest to możliwe. Ktoś ma jeszcze jakieś jakieś pomysły?

[ Dodano: 2014-03-27, 14:39 ]
Mam pytanko. Czy "dźwięk rozmowy" jest wysyłany przez modem jako strumienie audio? Rozwiązaniem mojej zagadki jest przechwycenie tych strumieni i ich odtworzenie? Ktoś coś na ten temat wie? są one wysyłane na port Huawei Mobile Connect - 3G Application Interface, przynajmniej tak mi się wydaję. Proszę o potwierdzenie moich domysłów.
btw. czuję, że ciężka przeprawa mnie z tym dźwiękiem czeka... Trzeba łapać strumienie, odtwarzać je na żywo. Ciekawy jestem opóźnień jakie z tego tytułu wystąpią. A tak sympatycznie było z komendami AT :hyhy:
Mikrokontrolery C,
Aplikacje Windows C#
Konstruowanie układów elektronicznych
Awatar użytkownika
YaHooo
Guru bezprzewodowy
Posty: 17761
Rejestracja: 2008-01-02, 14:38
Lokalizacja: Białystok

Re: Huawei komunikacja C#

Post autor: YaHooo »

bloniak91 pisze:Podane komendy nie działają.
Bo nie mają prawa zadziałać. W modemach GSM są obsługiwane tylko dla zachowania wstecznej kompatybilności ze standardem.
bloniak91 pisze:Czy "dźwięk rozmowy" jest wysyłany przez modem jako strumienie audio?
Nie, bo niby jak? Nie ma dodatkowych sterowników przecież. A komunikacja z modemem następuje tylko i wyłącznie po porcie COM.

Ogólnie to co chcesz zrobić to trudna sprawa, bo zapewne dźwięki nie są wysyłane w sposób standardowy, ale za pomocą jakiegoś kodowania. Trzeba by było je najpierw rozpracować (czytaj złamać Mobile Partner jak on to przechwytuje) aby potem samemu obsłużyć komunikację z modemem.
Pozdrawiam YaHooo :)
> FAQ < > Limitowanie TTL < > Filtrowanie MAC < > Limit - miniFAQ <
> Udostępnianie połączenia internetowego iPlus w trybie Ad-hoc < > Połączenie Ad-hoc <
(iPlus7GB-30%) + (Sierra Wireless AC881) + (HP Compaq nx7300) + (200m od BTS'a) = (600kB/s)
ODPOWIEDZ