PDA

Просмотр полной версии : ? Обработка СМС с e1550


Kонстантин
08.12.2009, 22:26
Интересует такой вопрос:

Есть ли реальная возможность сделать обработку СМС по заданному алгоритму с вводом/выводом через модем e1550 (в Windows или *nix подобных ОС)?

Может какой API для "стандартных" менеджеров имеется с подобной функцией или есть возможность реализации через AT команды?

В тему ещё не вникал, возможно вопрос поставлен слишком по-ламерски :)

redqlown
15.12.2009, 06:54
Возможность есь но скорее всего прийдется работать через АТ команды(сомневаюсь в существовании API)... тоже интересна данная тема давно хотел сделать что нибудь подобное, но времени не хватало, если найдете что нибудь по данной теме поделитесь пожалуйста..

Kонстантин
15.12.2009, 09:41
Нашёл на этом форуме программу от DarknessPaladin ( www.gsmforum.su/showthread.php?p=269430 ) по описанию, в принципе, почти то-что надо, но её автор считает возможности ввода-вывода AT команд списком и запуск внешних приложений (по событию на модеме) неперспективным направлением и нужным только мне ... :)

Кстати, DarknessPaladin там же даёт ссылку на мануал по AT командам.

ps К сожалению у меня в системе нет фреймворка .net поэтому в работе программу так и не увидел :(

redqlown
15.12.2009, 14:40
перспективы может и нет, просто интересно научится, ведь насколько я понимаю темеже АТ командами можно управлять GSM модулем(в каком нибудь разрабатываемом устройстве), спасибо за информацию

DarknessPaladin
17.12.2009, 20:48
Если кому надо: ссылка на ман по AT-командам есть в упомянутой моей теме, а также данный ман приаттачен в теме "AT-команды для мобильных девайсов" в этом форуме.
сейчас пишу краткий обзор AT-команд, совместимых с huawei (а это меньше половины из описанных в упомянутом мане), будет готово — выложу на сайте.

Kонстантин, вам вовсе не нужна моя прога — собственно работа с ком-портом (а работа с модемом идёт именно через виртуальный ком-порт) поддерживается в любом языке программирования без особых проблем.

Если вы спрашивает о существовании API — значит, на каком-то языке вы всё же умеете программировать? вот и посмотрите маны по этому языку, на предмет работы с портами.

Kонстантин
18.12.2009, 12:46
Если кому надо: ссылка на ман по AT-командам есть в упомянутой моей теме, а также данный ман приаттачен в теме "AT-команды для мобильных девайсов" в этом форуме.
сейчас пишу краткий обзор AT-команд, совместимых с huawei (а это меньше половины из описанных в упомянутом мане), будет готово — выложу на сайте.

Интересная и полезная задумка. :icq20:


Kонстантин, вам вовсе не нужна моя прога — собственно работа с ком-портом (а работа с модемом идёт именно через виртуальный ком-порт) поддерживается в любом языке программирования без особых проблем.

Если вы спрашивает о существовании API — значит, на каком-то языке вы всё же умеете программировать? вот и посмотрите маны по этому языку, на предмет работы с портами.

Сейчас только с PHP работаю и тот под линуксом в основном, пока не находил описания работы с COM портами под виндовс, наверное плохо искал :)

DarknessPaladin
18.12.2009, 20:49
Сейчас только с PHP работаю и тот под линуксом в основном
ээх. вот вам готовый код для проверки баланса под МТС :)
как раз под линукс.
как раз на ПыХПыхе.
как объяснение работы "принципы работы с портом", думаю, пойдёт.

<?php

function decodePDU($in) {
$b = 0; $d = 0;
$out = "";
foreach (str_split($in, 2) as $ss) {
$byte = hexdec($ss);
$c = (($byte & ((1 << 7-$d)-1)) << $d) | $b;
$b = $byte >> (7-$d);
$out .= chr($c);
$d++;
if ($d == 7) {
$out .= chr($b);
$d = 0; $b = 0;
}
}
return $out;
}

function encodePDU($in) {
$out = "";
for ($i = 0; $i < strlen($in); $i++) {
$t = $i%8+1;
if ($t == 8)
continue;
$c = ord($in[$i])>>($i%8);
$oc = $c;
$b = ord($in[$i+1]) & ((1 << $t)-1);
$c = ($b << (8-$t)) | $c;
$out .= strtoupper(str_pad(dechex($c), 2, '0', STR_PAD_LEFT));
}
return $out;
}

$f = fopen ("/dev/ttyUSB2", "rw+");
fputs($f, "AT+CUSD=1,".encodePDU("*100#").",15\r\n");

while ($s = fgets($f)) {
if (substr($s, 0, 5) == "+CUSD") {
$s = decodePDU(substr(trim($s), 10, -3));
echo $s."\n";
if (strpos($s, "1 - Dalee") !== false) {
fputs($f, "AT+CUSD=1,".encodePDU("1").",15\r\n");
}
else
break;
}
}

fclose($f);

?>

таки пользуйтесь поиском в интернете, обычно это помогает :)

Kонстантин
22.12.2009, 00:32
Я уже смотрел вариант с fopen.

Под линукс такой вариант сработает, но ставить линукс на рабочей машине для меня пока не актуально (разве что поставить виртуально линукс под винду, правда сомневаюсь, что сохраницца возможность адресации на устройство как в линуксе).

А под виндовс, насколько мне известно, fopen работает с кучей ограничений.

Вообще, спасибо за совет.

ps Насчёт поисковой - проблема не в желании, а в скорости соединения - на жпрс не особо нагуглишся.

pps нашёл кое-что по запросу fopen com windows - fopen("COM1:", "r+"); может то-самое :)

ещё кое-что (платное):

PHP Serial Extension:

This PHP extension for Windows allows you to communicate directly with the serial port through PHP.

This is a loadable extension for PHP running on Windows implementing serial port handling and communications. Once installed in PHP environment you can programm PHP applications to control serial device hosted on server from remote location; these devices can be anything from video switcher, cameras pan/tilt, ham radios, media players, home automation boxes, GSM modems/terminals (send/receive SMS), only your imagination and needs are the limits.

Link: http://www.easyvitools.com/phpserial/index.html
Link to installation instructions and usage: http://www.easyvitools.com/phpserial/php_ser_reference.html


Бесплатное:

Serproxy
Serproxy is a multi-threaded proxy program for redirecting network socket connections to/from serial links, in cases where the remote end of the serial link doesn't have a TCP/IP stack (eg an embedded or microcontroller system). The proxy allows other hosts on the network to communicate with the system on the remote end of the serial link. The Linux version requires a recent version of libpthread to compile/run.

Serproxy Downloads (Version 0.1.2)
Source code (tar.gz format) http://www.lspace.nildram.co.uk/files/serproxy-0.1.2.tar.gz
Source code (zip format) http://www.lspace.nildram.co.uk/files/serproxy-0.1.2.zip
Win32 binaries (V0.1.1) http://www.lspace.nildram.co.uk/files/serproxy-0.1.1-win32.zip



jared at dctkc dot com
http://ru.php.net/manual/en/function.fopen.php#20935
22-Apr-2002 08:33
<?php
// HOW TO USE PHP TO WRITE TO YOUR SERIAL PORT: TWO METHODS
$serproxy=true;
if ($serproxy) {
// Use this code in conjunction with SERPROXY.EXE
// (http://www.lspace.nildram.co.uk/freeware.html)
// which converts a Serial stream to a TCP/IP stream
$fp = fsockopen ("localhost", 5331, $errno, $errstr, 30);
if (!$fp) {
echo "$errstr ($errno)";
} else {
$e = chr(27);
$string = $e . "A" . $e . "H300";
$string .= $e . "V100" . $e . "XL1SATO";
$string .= $e . "Q1" . $e . "Z";
echo $string;
fputs ($fp, $string );
fclose ($fp);
}
} elseif ($com1) {
// Use this code to write directly to the COM1 serial port
// First, you want to set the mode of the port. You need to set
// it only once; it will remain the same until you reboot.
// Note: the backticks on the following line will execute the
// DOS 'mode' command from within PHP
`mode com1: BAUD=9600 PARITY=N data=8 stop=1 xon=off`;
$fp = fopen ("COM1:", "w+");
if (!$fp) {
echo "Uh-oh. Port not opened.";
} else {
$e = chr(27);
$string = $e . "A" . $e . "H300";
$string .= $e . "V100" . $e . "XL1SATO";
$string .= $e . "Q1" . $e . "Z";
echo $string;
fputs ($fp, $string );
fclose ($fp);
}
}
?>

DarknessPaladin
27.12.2009, 23:39
Kонстантин, линупс под виндой (в VM Ware) отлично будет работать — в VM Ware можно любое usb-устройство "переключить" из хост-системы (винды) в виртуалку — одно время я так инетом пользовался — не было дров к мобилке под висту, пришлось поставить винду (ХРюшку) в виртуалке, из виртуалки дозваниваться и через проксик, поднятый в той же виртуалке, лазить в инет из висты :) :) :)

Вот только на вашем месте я бы не заморачивался, пытаясь реализовать на ПыХПыхе то, для чего он не предназначен...
Освоить VB.net для человека, уже знакомого с парой-тройкой языков программирования, совсем не трудно — думаю, за недельку разберётесь в достаточном объёме...
Собстна сам VB.net (Express Edition) можно скачать с мелкомягких БЕСПЛАТНО (но размер конечно недеццкий :( ). Я сам экспрессом пользуюсь, навороты коммерческой версии мне ни к чему.

простейшая программа "открыть ком-порт, послать что-то, получить ответ" — на пару минут для знающего человека, для новичка — максимум на пол-дня делов.


fopen com windowsпопробовал сейчас, не получается, грит "неправильный аргумент"...

Kонстантин
30.12.2009, 01:15
Kонстантин, линупс под виндой (в VM Ware) отлично будет работать — в VM Ware можно любое usb-устройство "переключить" из хост-системы (винды) в виртуалку ...

Надо попробовать - не работал с виртуальными системами, хотя и наслышан о них.

Вот только на вашем месте я бы не заморачивался, пытаясь реализовать на ПыХПыхе то, для чего он не предназначен...

Привычка, да и просто интересен результат интеграции в онлайн проекты возможностей управления устройствами на ком. порту (например - нечто вроде онлайн системы с смс оповещением/управлением) понимаю, что велосипед изобретаю, но что поделать - хобби такое - сетевые проекты :)

Освоить VB.net для человека, уже знакомого с парой-тройкой языков программирования, совсем не трудно — думаю, за недельку разберётесь в достаточном объёме...
С освоением таки вовсе и не трудно, а вот с неделями, всё гораздо сложнее...


попробовал сейчас, не получается, грит "неправильный аргумент"...
Не совсем понял, о чём речь.
Если речь о PHP, то функция fopen аргументами берёт адрес файла, режим доступа и тд, а возвращает значение эээ... "файловый дескриптор" (кжцца тк называется), и уже он передаёцца функциям PHP для работы с эээ... "файловым потоком" (в нашем случае, как я себе это понимаю, им являецца ввод/вывод виртуального COM порта "3G-Application interface" от e1550).
А уже этим функциям, в качестве аргументов, можно "скармливать" AT команды по определённому алгоритму.

ps Хм, возможно, что даже возможно :) (при использовании AJAX) управления COM портом через веб интерфейс в режиме реалтайм - осталось приделать в COM порт, например ПДУ от радиомодели с веб-камерой и готовы виртуальные экскурсии по земле, по воде или по воздуху :)

DarknessPaladin
30.12.2009, 07:59
Не совсем понял, о чём речь.попробовал работать с функцией fopen на ПыХПыхе-5, под виндой. я знаю, как она должна работать... Вот только у меня при попытке открыть порт (режим "w+", нам же в него писАть нужно, а нетолько читать) она выдаёт ошипку "неправильный аргумент функции"

Надо попробовать - не работал с виртуальными системами, хотя и наслышан о них.и не пробуйте :) бОльшего извращения, чем поднять линух в вирте под виндой только для того, чтобы работать с dev/com, я даже не могу представить :)

и по-любому, ПыХПых не является языком, подходящим для такой работы. Его место — скрипты, исполняемые по запросу, обрабатывающие данные и возвращающие результат.
конечно, работать с модемом из ПыХа можно, но по удобству — всё равно что копать землю бензопилой. может что и получится, но трудоёмкость и "красивость" кода будут далеки от тех результатов, которые можно получить при использовании нормального языка, поддерживающего фоновые операции и обработку событий.