Tässä päivien kuluksi ajattelin pystyttää himaan oman SMS-gatewayn. Ajattelin 3G-modeemina käyttää Huawein E1820, mutta ongelmaksi onkin muodostunut se, etten ole mistään löytänyt minkään näköistä rajapintaan laitteen hallintaan esim. Javasta käsin. Eli onko kukaan mahdollisesti törmännyt moiseen, vai onko tuo rajapinta sitten mahdollisesti suljettua lähdekoodia...
En tiedä juuri tuosta mallista, mutta eikö näitä yleensä käskytetä sarjaporttirajapinnan kautta jonkinlaisilla AT-komennoilla? Ainakin Linuxissa käsittely onnistuisi silloin tavallisilla tiedosto-operaatioilla. Hienompaan sarjaporttikikkailuun voi kokeilla RXTX-nimistä kirjastoa.
Luulisin että modeemipalikka sisältää ihan normaalin USB -> Sarjaportti piirin, ja tosiaan AT komennoilla tapahtuu itse käskytys. Datasiirrosta en osaa sanoa, koska jos siirto tapahtuisi X/Zmodemilla tai vastaavalla perinteisellä keinolla, ei taidettaisi päästä noihin nykyisiin nopeuksiin. Joku viisaampi voisi valaista myös minua tässä asiassa
Ei sitten ihan suoraan soketteja käyttämällä onnistu? (Javaa siis käytän)
paha sanoa, se edellyttäisi tcp-ip yhteyttä. ja jos kommunikointi nimenomaan tapahtuu sarjaportilla, ei tätä mahdollisuutta ole? (tai ainakaan en ole ikinä käyttänyt sarjaportin kautta, enkä kuullut kenenkään muunkaan käyttävän)
Eipä ole tullut vastaan vielä mokkulaa, jonka kanssa voisi kommunikoida IP-protokollan päällä. Yleensähän mokkulaa käytetään välittämään IP-liikennettä operaattorin verkon ja tietokoneen välillä. Eli se on alemmalla tasolla kuin itse IP-protokolla. IP-protokollatason liikenne on siis mokkulan yli läpinäkyvää.
Tälläisen löysin http://www.oracle.com/technetwork/java/index-jsp-141752.html.
Tuolta luultavasti voisi löytyä ratkaisu ongelmaan...
Näistä voisi olla apua:
http://3g-modem.wetpaint.com/page/common AT-commands
http://3g-modem.wetpaint.com/page/Huawei AT-commands
http://3g-modem.wetpaint.com/page/executing AT-commands
Javassahan ei ole muun koodin kannalta mitään väliä, millä tavalla siihen mokkulaan yhdistetään, jos kommunikaatiossa käytetään kuitenkin InputStream- ja OutputStream-rajapintoja.
Kuten sanoin, kannattaa kokeilla ihan tiedosto-operaatioilla. Windowsissa sarjaporttiin saattaisi tuurilla päästä käsiksi avaamalla sellaisen "tiedoston" kuin \\.\COM1
. Netistä löytyi myös mode.com-ohjelmaan perustuva viritelmä, jossa siis varsinainen sarjaporttiasia on ulkoistettu toiselle ohjelmalle ja Java juttelee vain ohjelman kanssa.
Tuo RXTX-kirjasto näyttää olevan paras ratkaisu... Kiitos taas vastauksista...
Tosiaan kaikkia GSM/3G-modeemeja ohjataan AT-komennoilla. Laitteesta riippuen tuo AT-komentosetti voi olla suurempi tai pienempi. Periaatteessa kaikki laitteet kyllä tukevat kaikkia peruskomentoja, koska nämä tarvitaan jo testausta varten, mutta osa AT-komennoista voi olla suljettu myyntiversioissa.
Helpointa varmaan aluksi ottaa joku terminal-softa, esim Hyperterminal, ja kokeilla ensin manuaalisesti että kaikki tarvittavat AT-komentosekvenssit toimivat, ettei tule turhaan tehtyä Java-applikaatiota ja huomata sitten ettei kaikkia tarvittavia komentoja tueta.
Tuo on varmaan ihan fiksua...
Voidaanko nuo AT-komennot kirjoittaa aivan tavallisina merkkijonoina sarjaportin outputstreamiin esim. PrintWriterin avulla, vai tapahtuuko se jollain muulla tavalla?
Joo. Muista laittaa perään oikeanlainen rivinvaihto ja tarvittaessa flush.
Joo no muuten sainkin homman toimimaan kunnes aloin etsimään Huawein laitteelle sopivia AT-komentoja ja sitten törmäsin seuraavaan:
Huawei Staff kirjoitti:
Sorry, it's the enterprise secret, so we can't give you this information.
eli se siitä sitten...
Mutta voithan kokeilla esim näillä petrinm:n laittamilla linkeillä.
Kyllä tuo AT-rajapinta on suhteellisen standardi, eli jos ottaa jonkun valmistajan modeemin AT-speksin, niin samat peruskomennot toiminee myös Huaweissa. Suuri osa näistä komennoista tulee ihan 3GPP:n spesifikaatiosta (http://www.3gpp.org), eli ovat yhteisiä kaikille laitteille. Tuo AT-rajapinta on esim speksissä 3GPP TS 27.007. Periaatteessa sama info löytyy eri valmistajien spekseistä ja voivat olla hieman helppolukuisempia, esim Telitin moduulien rajapinta speksi http://www.telit.com/module/infopool/download.
Aihe on jo aika vanha, joten et voi enää vastata siihen.