Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > Имеется ли библиотека для работы с


Автор: barin_Student 24.4.2008, 09:12
Всем форумчанам , привет...
Если вдруг кто видел где лежит данный вид информации... ил кто сам писал управление АТ командами для модема Siemens MC35i , прошу вашей помощи , помогите... 
Проблема в том что  ,я отписал посылку СМС и тд , но когда тестируешься в малых объемах все тути фрути , но когда в больших объемах тестируешься , постоянно вылетает , заного переписывать уже надоело . С удовольствием приму помощь от тех кто написал уже. Могу и сам на некоторые вопросы ответить. 

Автор: ksili 24.4.2008, 09:18
Я писал на С++ в Билдере. Никакой библиотеки не использовал. Просто слал команды в ком-порт и читал оттуда ответ. Описание команд в pdf-е на сайте производителя. Чтобы разобраться с смс-ками в формате PDU, использовал суперскую утилитку pduspy. Ну и юзал конечно монитор порта (PortMon от Марка Руссиновича).

Автор: powerOn 24.4.2008, 09:24
Причём тут Java?

Автор: barin_Student 24.4.2008, 09:25
я тоже самое далаю , могу пример скинуть , вопрос , а вы не можете привести список команд , которые вы использовали для инициализации? smile 

Код

Причём тут Java? 

При то что именно на яве я бы хотел увидить готовое решение.

Я могу кинуть то что я реализовал , я думаю там туча ошибок... 

Автор: ksili 24.4.2008, 09:38
Цитата(barin_Student @  24.4.2008,  13:25 Найти цитируемый пост)
список команд , которые вы использовали для инициализации?

ATZ (сброс всех настроек на default)
AT+CLIP=1 (чтоб потом можно было мониторить состояние звонка командой AT+CLCC)
AT+CNMI=1,0,0,1,1 (чтобы пришедшие смс-ки сразу вываливались в ком-порт)

Автор: barin_Student 24.4.2008, 09:43
Код

 this.write("at&f&c1&d2e0");
            this.write("at+cmee=1");
            this.write("ati1");
            this.write("ati2");
            this.write("ati3");
            this.write("ati4");
            this.write("ati5");
            this.write("ati6");
            this.write("ati7");
            this.write("ati8");
            this.write("ati9");
            this.write("ati10");
            this.write("ati11");
            this.write("ati12");
            this.write("ati13");
            this.write("ati14");
            this.write("222");
            this.write("at+cgmi=?");
            this.write("at+cgmm=?");
            this.write("at+cgmm");
            this.write("at+cgmr=?");
            this.write("at+cgmr");
            this.write("at+cgsn=?");
            this.write("at+cgsn");
            this.write("at+gsn=?");
            this.write("at+cimi");
            this.write("at+cscs=?");
            this.write("at+cr=?");
            this.write("at+cr?");
            this.write("at+crc=?");
            this.write("at+caoc=?");
           
            this.write("at+csq=?");
            this.write("at+csq");
            this.write("at+cgsms=?");
            this.write("at+cgsms?");
            this.write("at+cmgf=?");
            this.write("at+cmgf?");
            this.write("at+cmgf=1");
            this.write("at+cnmi=?");
            this.write("at+cpms?");
            this.write("at+cpms?");
            this.write("at+csca?");
            String SMSC = properties.Load("SMSCNumber");
            this.write("at+csca="+SMSC+",145");
            this.write("at+csms=?");
            this.write("at+csms?");
            this.write("at+gcap=?");
            this.write("at+gcap");
            this.write("at+creg?");
            this.write("at+cops?");
            this.write("at+csmp=?");
            this.write("at+csmp?");
            this.write("at+cpms?");

this.write - пишет в ком порт... неужели вы ничаго из этого для инициализации не использовали?

Автор: ksili 24.4.2008, 09:46
На кой всё это надо? Тем более с вопросиками! Они же ничего не настраивают, а возвращают текущее значение настройки

Сделайте ATZ после включения. Если после этого что-то не так работает, ищите нужную команду и добавляйте. По большинству там всё по-умолчанию годится.

Автор: barin_Student 24.4.2008, 09:50
А можете сишный код привести запрос и ответ, например для отправки СМС, как вы работали с потоками ввода и вывода? smile 

Автор: ksili 24.4.2008, 09:56
Цитата(barin_Student @  24.4.2008,  13:50 Найти цитируемый пост)
как вы работали с потоками ввода и вывода? 

что за потоки? там потоком никакие данные передавать не надо. короткие команды передаются - на них возвращаются короткие ответы. 

Цитата(barin_Student @  24.4.2008,  13:50 Найти цитируемый пост)
А можете сишный код привести запрос и ответ, например для отправки СМС

там смс можно отправлять в текстовом виде и в формате PDU. Вам как надо?

Автор: barin_Student 24.4.2008, 10:14
Нет вы меня не поняли команды и все остальное я знаю, для отправки СМС я :
at+cmgf=1 (в текстовый вид )
at+cmgs =(номер телефона)(ENTER)\
>[text] (ctrl + z)
У меня есть ряд вопросов , даже я скажу что очень многа :
1) у меня если кто то (не моя программа) захватывает ком порт, а я начинаю посылать команды , я уже не могу рестартоваться , и это плохо... Потоки ввода и вывода , это как рас то что вы посылаете и принимаете с ком порта. и ТД ,  мне сама суть постоянного парсинга команд не нравиться , может кто то как нибудь более практичнее реализовал.?

Автор: ksili 24.4.2008, 10:20
Цитата(barin_Student @  24.4.2008,  14:14 Найти цитируемый пост)
если кто то (не моя программа) захватывает ком порт, а я начинаю посылать команды , я уже не могу рестартоваться

А как это вы их посылаете? По-моему это невозможно. ну или по-крайней мере надо оччень постараться, чтобы это сделать. А вы вообще под чем? Win XP?
Цитата(barin_Student @  24.4.2008,  14:14 Найти цитируемый пост)
сама суть постоянного парсинга команд не нравиться

А чего там сложного? После получения ответа на команду надо только посмотреть, что там на конце. Если OK, то всё ОК, если ERROR - то ошибка. Не так уж много команд возвращают ещё что-то другое

Автор: barin_Student 24.4.2008, 10:43
+ cmgs (номер порядковый) - ответ на посылку сообщения..
+ cmgs error [1- 512] - ответ на ошибку
at+cmgl=REC UNREAD - вот на такую команду совсем другой ответ... 
Вариантов ответа очень многа, если конечно только посылать СМС , то тогда все в меньшем размере. Ну ладно счас еще погуглю , может быть есть специализированные форумы по этому вопросу..

Автор: ksili 24.4.2008, 10:50
кажеся ещё какой-то командой можно настроить формат ответов. OK и ERROR - это по-умолчанию. А кажется можно сделать, чтобы в ответ приходили цифры. 0 вместо OK, 1 - вместо ERROR, и т.д. Но всё равно проще уже наверно не будет. Какое бы ты средство не использовал, всё равно  весь ответ в нём будет содержаться в одной строке (массиве, свойстве типа строка...), а её опять же надо будет парсить.

Автор: barin_Student 25.4.2008, 08:53
Вот вопрос по модему:
на команду 
at+cmgd=(номер смски , которую мне надо удалить) , модем отвечает :
+СMS ERROR :512
(в ошибках сказано -user abort), что это может быть? ПС:пина нет!.

Автор: ksili 25.4.2008, 10:50
Наверно ты что-то шлёшь в порт до того, как выполнится эта команда. Делай после её посылки небольшую паузу

Автор: barin_Student 25.4.2008, 11:19
ок , счас попробую.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)