Форум программистов, компьютерный форум, киберфорум
PHP
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.88/75: Рейтинг темы: голосов - 75, средняя оценка - 4.88
4 / 4 / 4
Регистрация: 10.05.2014
Сообщений: 60

PHP + COM порт

10.05.2014, 15:51. Показов 15214. Ответов 24
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день. Стоит задача реализовать отправку смс через 3g модем средствами пхп. Воспользовался классом php_serial.class.php, но скрипт отправки отправки отказывается работать с com портом, указываю ошибку, что порт не верный. Проблема как для меня - доступ к com порту запрещен. Прежде никогда не работал с com портами, но считаю, что все должно работать, так как на сервере стоит два модема и на один модем комманды уходят, но он используется другим(аналогичным) ПО, написанным на делфи и его использовать нельзя. Модем Huawei, как мне заставить модем работать с php. утилита Putty отправляет сообщения с этого модема . Пример скрипта

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
include 'php_serial.class.php';
 
// Let's start the class
$serial = new PhpSerial;
 
// First we must specify the device. This works on both linux and windows (if
// your linux serial device is /dev/ttyS0 for COM1, etc)
$serial->deviceSet("COM1");
 
// We can change the baud rate, parity, length, stop bits, flow control
$serial->confBaudRate(2400);
$serial->confParity("none");
$serial->confCharacterLength(8);
$serial->confStopBits(1);
$serial->confFlowControl("none");
 
// Then we need to open it
$serial->deviceOpen();
 
// To write into
$serial->sendMessage("Hello !");
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
10.05.2014, 15:51
Ответы с готовыми решениями:

PHP и Arduino. COM порт. Не сохраняется $_SESSION
Требуется управлять платой Arduino по usb - ком интерфейс. Ос ubuntu. Отправка в ком порт - как и в файл: fopen, fwrite. Сначала делал...

Ищу помошников, для того что бы закончить порт UglifyJS на PHP
Привет всем, я ищу помощь. Сам я программист но из за учебы сейчас не достаточно времени что бы заняться этим делом самому, по этому дал...

Открыть порт 4444 в брэндмауэре. Антивируса нет. провайдером порт открыт
Подскажите как открыть данный порт,все делал как тут http://windows.microsoft.com/ru-ru/windows/open-port-windows-firewall#1TC=windows-7....

24
4 / 4 / 4
Регистрация: 10.05.2014
Сообщений: 60
12.08.2016, 15:20  [ТС]
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от alsio Посмотреть сообщение
Поставил Денвер. Запустил скрипт CarterSS. Выдал:
Warning: Device must be opened in Z:\home\sms\www\php_serial.class.php on line 541
Обязательно проверь, чтобы в скрипте было открытие было, потому что в моем примере похоже ошибка.
Эту строку вставь
PHP
1
2
// Then we need to open it
    $serial->deviceOpen();

Цитата Сообщение от alsio Посмотреть сообщение
Warning: Reading serial port is not implemented for Windows in Z:\home\sms\www\php_serial.class.php on line 503
Предварительно отправил СМС через Билайновскую утилиту, все ОК.
Правильно ругается, потому что чтение порта средствами пхп, насколько я помню, не поддерживается в винде.


Пробуй вот так:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
include "php_serial.class.php";
// начало класса
$serial = new phpSerial;
$serial->deviceSet("COM15"); //com порт модема
$serial->confBaudRate(9600);
$serial->confCharacterLength(8);
$serial->confParity("none");
$serial->confStopBits(1);
$serial->confFlowControl("xon/xoff"); // управление потоком
$serial->deviceOpen();
$serial->sendMessage("AT+CMGF=1\r");
sleep(3);
$serial->sendMessage("AT+CMGS=\"$phone\"\r");
$serial->sendMessage($message.chr(26));
sleep(3);//ждем отправку сообщения
$serial->deviceClose();
sleep(4);//ждем закрытие устройства
Должно работать.
0
2 / 2 / 2
Регистрация: 27.12.2012
Сообщений: 80
12.08.2016, 16:53
В итоге скрипт такой:

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?
include "php_serial.class.php";
// тел/сообщения
$phone="+7953232ХХХХ";
$message="test from 3G";
// начало класса
$serial = new phpSerial;
$serial->deviceSet("COM4"); //com порт модема
$serial->confBaudRate(115200);
$serial->confCharacterLength(8);
$serial->confParity("none");
$serial->confStopBits(1);
$serial->confFlowControl("xon/xoff"); // управление потоком
$serial->deviceOpen();
$serial->sendMessage("AT+CMGF=1\r");
sleep(3);
$serial->sendMessage("AT+CMGS=\"$phone\"\r");
$serial->sendMessage($message.chr(26));
sleep(3);//ждем отправку сообщения
$serial->deviceClose();
sleep(4);//ждем закрытие устройства
echo("OK");
?>
Секунд 15 думает и выдает ОК. Но СМС не приходят.
$phone в правильном формате (естественно, вместо ХХХХ цифры)?
0
4 / 4 / 4
Регистрация: 10.05.2014
Сообщений: 60
12.08.2016, 17:29  [ТС]
После этой строки
PHP
1
$serial->deviceOpen();
Попробуй вставить эти
PHP
1
2
$serial->sendMessage("AT\r");
sleep(3);
Секунд 15 это очень долго для отправки, хотя возможно все.
Телефон вроде верный.
Ты для себя, еще раз повторюсь, попробуй самостоятельно АТ команды отправить через терминал на модем, увидишь как отправляется СМС.
1
2 / 2 / 2
Регистрация: 27.12.2012
Сообщений: 80
15.08.2016, 17:32
Всё. Заработало. Строки вставил, но, похоже, проблема была в ком-порте. Изначально выставил ком, с которым работала Билайновская прога, а оказалось нужен другой.

Сейчас СМС отправляет, но перед отправкой думает 15-20 секунд. Может это несколько sleep ов в коде тормозят процесс?

И теперь еще одна одна проблемка вылезла: отправляются СМС только латинскими символами. Кириллица не отправляется.

Буду гуглить этот вопрос, но вдруг есть уже готовое решение?

P.S. Премного благодарен за помощь!
0
4 / 4 / 4
Регистрация: 10.05.2014
Сообщений: 60
15.08.2016, 22:46  [ТС]
Цитата Сообщение от alsio Посмотреть сообщение
Сейчас СМС отправляет, но перед отправкой думает 15-20 секунд. Может это несколько sleep ов в коде тормозят процесс?
Да, это sleep тормозит, ты вправе экспериментировать и уменьшить время паузы. Когда писал скрипт, то не вникал как настроить модем на отправку, поэтому мне этого времени хватало; попробуй по секунде поставить, этого очень даже хватит, но после лучше пару раз потестить.
Цитата Сообщение от alsio Посмотреть сообщение
И теперь еще одна одна проблемка вылезла: отправляются СМС только латинскими символами. Кириллица не отправляется.
Для того, чтобы отправлять сообщения кириллицей, тебе нужно копать в сторону PDU формата смс или же отправлять в текстовом формате, но в другой кодировке(скорее всего в юникоде).
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
15.08.2016, 22:46

В конфигурационном файле прописан порт, но пишет ошибку порт 80 занят другим приложением
Здравствуйте. Пишу решение с 2 проектами - сервер и клиент с дуплексным контрактом. Служба запускается нормально. Когда же запускаю...

В порт в среднем приходит 3 корабля в день. Какова вероятность того, что в порт в день придет 2 корабля; 4 корабля?
помогите решить пожалуйста В порт в среднем приходит 3 корабля в день. Какова вероятность того, что в порт в день придет 2 корабля;...

Примеры использования Async Free (СОМ-порт) или Async Pro (СОМ-порт)
Здравствуйте! Скажите пожалуйста есть пример где используют Async Free (СОМ-порт) или Async Pro (СОМ-порт)? почему то не могу найти и...

Game порт. или не Game порт
Добрый день! Конструирую свой игровой девайс (корабельный штурвал). Суть - вращаемый вал, непосредственно над ним лазерная мышь. С...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
25
Ответ Создать тему
Новые блоги и статьи
Сукцессия 20. Война автоботов. Делаем ставки. Лёд против "пш-пш!".
anaschu 11.07.2026
Битва ИИ в ризосфере: Как мы скрестили жесткие ОДУ, закон Фика и «подземный шантаж» Уважаемые коллеги! Хочу поделиться уникальным опытом ведения междисциплинарной компьютерной разработки. Прямо. . .
Сукцессия 19. Какие выводы я сделал из модели? Часть 2.Внутримикоризный стехиометрический буфер и хроно-дискретные зоны экспансии
anaschu 11.07.2026
Био-Инженерный Ликбез: Архитектура Модели Ризосферы Математический аппарат моделирования
Сукцессия 18. Какие выводы я сделал из войны грибов с деревьями? Часть 1- рассказ и немного про термины
anaschu 11.07.2026
Био-Инженерный Ликбез: Архитектура Модели Ризосферы Математический аппарат моделирования Система ОДУ описывает динамику изменения массы различных компонентов системы во времени. Ключевой. . .
Просветление в 5 секунд
kumehtar 10.07.2026
Андрей Веретенников выдал фразу недавно: "Вам не обязательно кем-то себя считать"
Эксперимент с картинкой-обложкой на CodinGame
Adler 10.07.2026
Решил на днях провести эксперимент. У меня есть аккаунт на CodinGame, ТОП-3 по РФ среди 2200 участников (в разделе соревнования по программированию ИИ-ботов). Там есть обложка, куда можно влепить. . .
GitDOS: Когда я решил скрестить MS-DOS, GitHub и Claude
MaGz GoLd 08.07.2026
Привет, Киберфорум! Хочу поделиться своим проектом, который, надеюсь, вас заинтересует. GitDOS — это веб-приложение, которое позволяет запускать DOS в браузере с тремя крутыми фичами: диски живут в. . .
Учебный мини "цифровой двойник" = (Сервер = Java + Flask_питон )+(3D = Гугловскаая 4T nvideo + google colab) +( WMS = Odoo на Docker)
anaschu 07.07.2026
Увидел в требованиях к вакансии создателя имитационных моделей связку (REst + Api + WMS + Anylogic + питон + 3D Nvideo), и решил посмотреть, что это такое. Из этого всего я работал более менее. . .
Море в объективе
kumehtar 06.07.2026
Хотел написать много проникновенных слов, но передумал. Оно само - говорит. Кто слышит тот слышит.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru