Serial port php
Serial port php
PHP Serial was written at a time where I did not know any other language than PHP and I started to get seriously bored with its abilities.
I somehow got hold of a « Citizen C2202-PD » point-of-sale display, and I wanted to play around with it. I also managed to get the documentation of it, and created a convenience class to access the serial port though the Linux file.
Afterwards, I posted it to PHP Classes, and this probably is what brought it any visibility.
State of the project
Interestingly enough, this piece of code that is widely untested has created a lot if interest ever since it was created, and especially nowadays with everybody toying around with Arduinos and Raspberry Pis. I receive about 1 email every month asking for help with the code or sending patches/suggestions.
I think that it is time for me to remove the dust off this project and to give it a full visibility on modern tools, aka GitHub.
There is lots of bugs. I know there is. I just don’t know which are they.
- Linux: the initially supported platform, the one I used. Probably the less buggy one.
- MacOS: although I never tried it on MacOS, it is similar to Linux and some patches were submitted to me, so I guess it is OK
- Windows: it seems to be working for some people, not working for some others. Theoretically there should be a way to get it done.
I have a few concerns regarding the behaviour of this code.
- Inter-platform consistency. I seriously doubt that all operations go the same way across all platforms.
- Read operations. Reading was never needed in my project, so all the tests I d >
Call for contribution
I have about 0 time to code or test this project. However, there is clearly a need for it.
As in all open-source projects, I need people to fit this to their needs and to contribute back their code.
What is needed, IMHO:
- Address the concerns listed above, and find new ones.
- Create a reproducible test environment for each OS, and prove that each feature works (basically, unit-testing).
- Report of use cases, bugs, missing features, etc.
If you feel like doing any of those, do not hesitate to create an issue or a pull-request, I’ll gladly consider consider it 🙂
PHP Serial Copyright (C) 2007-2014 PHP Serial’s contributors (see CONTRIBUTORS file)
This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
Управление Arduino через последовательный порт и PHP
Разберемся как управлять светодиодом RGB через последовательный порт, используя PHP и компьютер, подключенный к Arduino через USB.
Комплектующие
Нам понадобится плата Arduino Micro или любая другая плата Arduino с подключением USB. Micro использует micro USB в качестве источника питания и связи, так что это довольно удобно и просто. Можно запустить PHP на своем компьютере и отправлять вывод на Arduino через USB.
- Arduino Micro
- 1 x RGB LED (светодиод)
- 3 x Резисторы 220 Ом
- Макетная плата
- 1 x Перемычки (П/П)
Схема соединения
Подключаем резисторы напрямую к ножкам RGB и контактам Arduino. Используем общий анодный RGB-светодиод, поэтому общий вывод должен быть подключен к 5В. Если вы используете светодиод RGB с общим катодом, вам следует вместо этого подключить общий вывод (который является более длинным) к GND (земля).
Используем цифровые выходы 3, 4 и 5, но вы можете использовать другие контакты, если хотите.
Тестирование соединений
Чтобы проверить правильность подключения, загрузите эскиз, представленный ниже. Эскиз будет в цикле проходить по цветам: красный, зеленый, синий, желтый, фиолетовый и голубой.
Вы должны увидеть мигание светодиода разными цветами. В данном случае мы подключили светодиод таким образом, чтобы красная нога была на выводе 5, зеленая нога была на выводе 4, а синяя нога на выводе 3. Если цвета выглядят неправильно, вы можете изменить числа, чтобы определить, какая нога какая.
Управление через Serial на Arduino
Теперь давайте реализуем последовательную связь, чтобы контролировать цвет светодиода. Мы собираемся использовать код, представленный ниже. Загрузите этот эскиз на свою плату:
После загрузки и запуска кода откройте Serial Monitor в Arduino IDE (Инструменты -> Serial Monitor). Выберите 9600 бод (скорость, что мы использовали в коде) и выберите «Newline» (Новая строка) в поле выбора окончания строки (это поле слева от выбора скорости). Это важно, потому что по умолчанию не происходит отправки перевода строки и нам нужно определить окончание строки.
Теперь наберите 255,0,0 и нажмите ввод, чтобы увидеть, как светодиод становится красным.
Управление светодиодом через последовательный порт с помощью PHP
Теперь, когда последовательная связь настроена, нам нужно написать небольшой PHP-скрипт для отправки команд через последовательный порт на плату Arduino. Для этого мы будем использовать библиотеку Composer hyperthese/php-serial.
Создайте файл led.php , куда напишем такую программу:
Обратите внимание, что очень важно использовать одинаковую скорость передачи везде. Здесь мы используем 9600.
Ниже небольшая демонстрация управления платой Ардуино с использованием PHP, API Twitter и старого LOLShield.
PHP + COM порт
Добрый день. Стоит задача реализовать отправку смс через 3g модем средствами пхп. Воспользовался классом php_serial.class.php, но скрипт отправки отправки отказывается работать с com портом, указываю ошибку, что порт не верный. Проблема как для меня — доступ к com порту запрещен. Прежде никогда не работал с com портами, но считаю, что все должно работать, так как на сервере стоит два модема и на один модем комманды уходят, но он используется другим(аналогичным) ПО, написанным на делфи и его использовать нельзя. Модем Huawei, как мне заставить модем работать с php. утилита Putty отправляет сообщения с этого модема . Пример скрипта
PHP и Arduino. COM порт. Не сохраняется $_SESSION
Требуется управлять платой Arduino по usb — ком интерфейс. Ос ubuntu. Отправка в ком порт — как и в.
Ищу помошников, для того что бы закончить порт UglifyJS на PHP
Привет всем, я ищу помощь. Сам я программист но из за учебы сейчас не достаточно времени что бы.
В конфигурационном файле прописан порт, но пишет ошибку порт 80 занят другим приложением
Здравствуйте. Пишу решение с 2 проектами — сервер и клиент с дуплексным контрактом. Служба.
CarterSS, сегодня полдня точно так же проигрался с 3G модемом Huawei E173 и отправкой СМС с PHP-скрипта.
Все примеры в интернете перепробовал, но СМС не уходят. С штатной программы улетают на «раз-два».
Но, есть одно «НО». Пользуюсь так же программкой — и СМС улетают на УРА, при том что улетают как из самой программы, так и через VBS-скрипт.
Запуск VBS-скрипта идет с PHP-скрипта. Криво, но как-то работает. Но хотелось бы работать с модемом напрямую с PHP-скрипта.
Добавлено через 1 час 12 минут
Работает. 🙂
Оказывается, забыли включить в пример первоначальную АТ-команду «AT»
модем Huawei E173
так же где-то в интернете читал, что желательно после каждой команды делать задержку и считывать информацию с порта — если кто знает, подскажите, нужно или нет.
Добавлено через 13 часов 54 минуты
CarterSS, Вы правы.
Huawei пингвин гордый. Нужно его «пинать» через heperterminal. И то, не всегда выходит
Этот класс write-only под Windows (и rw под *nix), не интересно.
Я для работы с COM-портами использую http://pecl.php.net/dio , работает прекрасно. Вероятно и в вашем случае компиляция (вру, там есть готовая DLL’ка под Windows!) этого расширения решит проблему без костылей вроде коннекта к порту из стороннего ПО. Правда конфигурировать КОМ-порт придется все равно через сторонние утилиты (аналогично тому, как это делает php_serial.class.php).
Правда после написания своих велосипедов на PHP, — я случайно наткнулся что в расширениях к Chroimium-based браузеру можно обращаться напрямую к COM-портам, что кстати тоже очень интересное решение в рамках стека веб-технологий, например (гуглить «chrome serial api»):
Javascript | |
13.01.2015, 18:44 | 6 |
13.01.2015, 18:47 | 7 |
root, почему обязательно веб-сервер? У меня это терминал на raspberry pi, у него есть картридер и ко всему этому счастью — веб-интерфейс, как раз на chromium. Работать с картридером прямо из JS очень даже логично (т.к. картридер напрямую связан с пользовательским интерфейсом), нежели гонять на локалхост запросы (и тут уже не важно, — общаешься ты дальше с ним из PHP или из C++, тут уже костыль), чтобы обратится к картридеру. Или по-вашему делать терминалы на веб-технологиях — тоже бред. 😉 PS: Нет, не тормозит. | |
13.01.2015, 19:04 | 8 |
не знаю, вроде бы как раздел форума обязывает.. хотелось бы следовать.. ээ правилам.. Добавлено через 2 минуты хороший у вас сервант.. У меня доступ к серверу только через веб.. к кардридерам доступ получу, если штурмом возьму датацентр Добавлено через 1 минуту | |
13.01.2015, 19:10
| |
13.01.2015, 19:31
| |
14.01.2015, 09:53 [ТС] | 11 |
14.01.2015, 15:39 | 12 |
А теперь попробуйте мне показать, как это можно сделать более, как вы говорите, «удобно»? — Отлично, покажите удобство =) К слову, — этот код написан в крайне сжатые сроки и уже полгода в продакшне. За эти полгода — не было ни одного сбоя в работе картоприемника. Аптайм у терминала — 4 месяца, был ребут из-за отключения электричества. Serial port phpCan anyone shed some light on why this wont work on the raspbery pi? i suspect that is has something to do with the way the serial class in php is handling the serial port. here is a snippet of code The following code works on a regular mac computer, i changed If i use this code(python 2) or minicom i can send and receive from the serial port Re: php and uart serial outputRe: php and uart serial outputAs many serial projects here, there been lot of security reson. TIP: Search on the forum for serial. /Patrik Re: php and uart serial outputRe: php and uart serial outputRe: php and uart serial outputI don’t know if this has anything to do with the problem but offer it as a thing to check. 1) /boot/cmdline.txt change from Re: php and uart serial outputRe: php and uart serial outputHi, I’m using php_serial.class and my program is able to transmit only if I keep «cat /dev/ttyAMA0» running in another terminal, and the received string goes there (and not printed by the php program) If I stop «cat. » the php program does not even transmit. Any idea ? Distro on the RPI is Occidentalis v.0.1 This is the simple program: Re: php and uart serial outputRe: php and uart serial outputI am also having trouble getting the serial port to work with PHP. I am using the php_serial. > $ ls -l /dev/ttyAMA0 Why does the opening of the port fail? I should add that this is my first venture into php and my linux skills are a little rusty as well. Re: php and uart serial outputFind out what user runs PHP: Re: php and uart serial outputLike my post little up in this thread. Great that solved your problem. Re: php and uart serial outputRe: php and uart serial outputRe: php and uart serial outputbufferzone: I don’t know about the php module that you are using, but I should recommend you the following: Disconnect the radio module from the RaspberryPi, then loop back the Tx and Rx lines, If everything is running well, the characters that you type in should be looped back to your screen without any modifications. In the other hand, having a look to the radio module specs, seems to be a simple remote controller, are you sure that can be used to send data (even at low speeds)? Marco-Luis Adblock detector |