Прочитайте из RS232 и отправьте команду Trought php url - PullRequest
0 голосов
/ 14 мая 2019

Мне нужно создать проект, в котором на основе информации, считываемой из порта RS232, мне нужно выполнить соответствующий URL для обновления базы данных mysql на удаленном сервере.

Я думаю, что лучшее оборудование - это rasperry или mini-pc, подключенный к интернету. Это правда?

Единственное, что я не знаю, как начать писать сценарий для этой цели. На каком языке?

Я работаю только с php / javascript: (

Например, если я получаю данные через порт RS232 с:

110111 ------> then execute url http://www.test.com/update.php?id=5&qty=1

100011 ------> then execute url http://www.test.com/update.php?id=6&qty=3

etc...

Url предназначен только для обновления базы данных mysql на веб-сервере, поэтому мне не нужно ничего получать.

Кто-нибудь может посоветовать мне, как начать и если есть несколько примеров для моей цели, онлайн?

ОБНОВЛЕНИЕ: Я пытаюсь лучше объяснить мою цель: у нас есть ДЕНЕЖНАЯ КОРОБКА, куда, когда распечатывается квитанция, отправляется также информация о купленных продуктах, а также вывод проблемных файлов rs232. Например, ПРОДУКТ XX, КОЛИЧЕСТВО 5, ЦЕНА 40,00, ID = 1 С этой информацией мне нужно синхронизировать / обновить онлайн базу данных MySQL. Единственный способ обновить мою базу данных онлайн - выполнить / посетить URL, например: http://www.test.com/update.php?id=1&qty=5 Итак ... я знаю, что PHP не может читать HW низкого уровня, поэтому я не могу читать com-порт напрямую с помощью PHP. Моя идея заключалась в том, чтобы подключить малину (с портом rs232) и создать скрипт pyton, который читает rs232 и на основе полученной информации (ID и QUANTITY для моего использования), создает соответствующий URL и выполняет его.

1 Ответ

0 голосов
/ 17 мая 2019

Если вы хотите использовать PHP, я что-то нашел, но сайт на немецком языке: https://www.mikrocontroller.net/topic/101642

Я постараюсь перевести код и комментарии для вас.

<?php


//function to select the serial port
function rs232init($com,$bautrate)
{
    `mode $com: BAUD=$bautrate PARITY=N data=8 stop=1 xon=off`;
}

//function for sending
function send($comport,$character)
{
    $fp = fopen ("$comport", "w+");
    if (!$fp)
    {
        echo "Port is not opened for sending!";
    }
    else 
    {
        fputs ($fp, $character);
        fclose ($fp);
    }
}

//function for reading
function read($comport2,$seconds)
{

    $buffer = "";

    $fp2 = fopen ("$comport2", "r+");
    if (!$fp2)
    {
        echo "Port is not opened for reading!";
    }
    else
    {
        sleep($seconds);
        $buffer .= fgets($fp2, 4096);
    }
    return $buffer;
    fclose ($fp2);
}

// Example calls

rs232init("com2","9600"); // open Com2 with bautrate 9600
sending("com2","hello");  // send “hello” with comport2 
$read = read("com2","2"); // read 2 seconds from Comport2 and write the result in variable $read
echo $read ;   „“         // print variable $read

?>

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...