Cherche documentation pour concevoir 1 Extension PHP (port série)

Résolu
professor_tourneseul Messages postés 17 Date d'inscription samedi 5 septembre 2020 Statut Membre Dernière intervention 14 mai 2021 - Modifié le 30 mars 2021 à 18:04
professor_tourneseul Messages postés 17 Date d'inscription samedi 5 septembre 2020 Statut Membre Dernière intervention 14 mai 2021 - 29 avril 2021 à 11:47
Bonjour à tout le monde,

Sous Windows-10, je cherche à développer une extension PHP permettant de
communiquer efficacement avec une liaison série COM RS232 côté serveur web.
Elle sera destinée au final à fonctionner dans une application console et/ou web
(script) en PHP sous EasyPHP_Devserver-17.

Je sais qu'il faut passer par une programmation intermédiaire bas niveau en
C/C++ (je programme également en Objet C++ avec le RAD C++Builder et Qt).

Mais voilà, problème, j'ai beaucoup de difficultés à trouver de la documentation
technique abordable et fournie sur ce délicat sujet des Extensions PHP.

Si vous connaissez des documents, des liens sur la toile Internet, je suis preneur,
cordialement, merci.

2 réponses

professor_tourneseul Messages postés 17 Date d'inscription samedi 5 septembre 2020 Statut Membre Dernière intervention 14 mai 2021
22 avril 2021 à 15:31
bonjour à tous,

bon je cherche toujours et pour info j'ai trouvé cà : http://php-qt.org/

PHP-Qt :
c'est une Extension PHP qui permet d'appeler des applications Qt (C++ Objet)
dans un script PHP.
Je sais que, Sous Qt, on peut très facilement accéder aux ports COM de la
liaison série (côté serveur web) en C++ Objet via la console.

Mais ça sent le périmé car ici c'est en Qt version 4 et Qt a passé la version 5
et viens d'arriver en version 6 !
... et puis ce site n'a pas l'air maintenu ni mis à jour !!
0
professor_tourneseul Messages postés 17 Date d'inscription samedi 5 septembre 2020 Statut Membre Dernière intervention 14 mai 2021
24 avril 2021 à 13:52
bonjour,

finalement, mes recherches se sont orientées vers l' Extension existante : Direct IO

Alors, sinon le blème c'était que les recherches sur le thème "Extension PHP" m'orientaient vers des sites comportant des sujets sur les extensions de fichiers ...

Alors j'ai ciblé mes recherches vers des sites anglo(Saxon)phones avec le tag suivant du genre :
"extend php with c c++ windows" ou mieux "developing PHP extensions in C C++ under windows"

... ... après faut tout traduire dans la langue de Molière ...

Les résultats en format PDF : (tutos)
http://talks.adoy.net/PremierPasExt.pdf
http://talks.somabo.de/200903b.pdf

Quelques résultats en liens web :
https://lytrax.io/blog/makeitwork/creating-php7-extensions-linux-windows

https://medium.com/@erinus/how-to-build-php-extension-on-windows-d1667290f809
https://medium.com/@erinus/how-to-build-php-on-windows-a7ad0a87862a
https://windows.php.net/download/

https://www.dreamincode.net/forums/topic/184335-creating-a-php-extension-in-c/
https://www.dreamincode.net/forums/topic/244215-introduction-to-creating-a-php-extension-for-windows/
https://php.developpez.com/faq/?page=bibliotheques#extension_liste

http://www.brainboxes.com/faq/items/how-do-i-control-a-serial-port-using-php
-> http://www.brainboxes.com/files/pages/support/faqs/sample_code/Communicate-Over-Serial-Port-In-PHP.zip (script PHP utilisant l'extension DIO)
-> http://pecl.php.net/package/dio (Extension DIO : Direct I/O functions avec les sources )
->> Thread-safe (for Apache) <--- ici pour moi, car sous EasyPHP-Devserver-17 comprenant 2 moteurs PHP : PHP5630vc11x86 et PHP713vc14x86
->> Non-thread-safe (for IIS)

J'ai téléchargé puis commencé à consulter, parcourir les sources du package DIO :
dio.c
dio_common.c
dio_posix.c
dio_stream_wrappers.c
dio_win32.c
php_dio.h
php_dio_common.h
php_dio_common_data.h
php_dio_posix.h
php_dio_stream_wrappers.h
php_dio_win32.h
+ 1 répertoire de scripts PHP test

dans le premier fichier dio.c , on mentionne une zone de fonctions dépréciées
concernant les fonctions classiques de base répertoriées dans l'aide :

/*
   +----------------------------------------------------------------------+
   |                       DEPRECATED FUNCTIONALITY                       |
   +----------------------------------------------------------------------+
   | The functions below are from the earlier DIO versions.  They will    |
   | continue to be maintained but not extended.  It is thoroughly        |
   | recommended that you should use either the stream wrappers or the    |
   | DIO classes in new code. - Melanie                                   |
   +----------------------------------------------------------------------+
*/
    dio_close() 
    dio_fcntl() 
    dio_open() 
    dio_read()   <--- lecture toujours bloquante (j'avais testé depuis ma 1ière utilisation de DIO !!)
    dio_seek() 
    dio_stat()
    dio_tcsetattr()
    dio_truncate()
    dio_write()
/*
   +----------------------------------------------------------------------+
   |                   END OF DEPRECATED FUNCTIONALITY                    |
   +----------------------------------------------------------------------+
 */


dans le fichier dio_stream_wappers.c , on mensionne 2 fonctions PHP pour ouvrir
des flux :

dio_raw() <--- pour ouvrir un flux d'E/S direct bas niveau (sans bufférisation)
dio_serial() <--- pour ouvrir un flux d'E/S direct bufférisé (avec tampon mémoire : buffer)

Cette Extension DIO est toujours maintenue (04/2020), mais il semblerait donc que
l'aide sur l'Extension Direct IO ne soit pas du tout à jour ici :
--- https://www.php.net/manual/fr/book.dio.php

Je vais fouiller encore et tester en script PHP pour voir ...

Cordialement, merci
--
A++ Did
0
professor_tourneseul Messages postés 17 Date d'inscription samedi 5 septembre 2020 Statut Membre Dernière intervention 14 mai 2021
Modifié le 29 avril 2021 à 12:19
Bonne nouvelle !! (Good news) : pour moi, plus besoin de recréer une nouvelle
Extension PHP pour gérer un port COM série RS232 !!
--> Elle existe déjà et l'existante c'est Direct-IO (DIO) et au final elle fonctionne !
... et c'est plié sans rien compiler ...

C'est seulement la documentation officielle qui n'est pas à jour ici :
--- https://www.php.net/manual/fr/book.dio.php <----- PAS BIEN !!


Au niveau des sources de l'Extension PHP, c'est du langage C mais pas que ; ça
comprend :
- des structures de données bien particulières et spécifiques,
- des instructions qui concernent le C "pure" et d'autres en rapport avec
le moteur PHP interne (écrit en C) et d'autre encore en rapport avec le matériel,
les systèmes d'exploitation utilisables ...
Enfin tout ça pour dire que ça en fait un langage (indigeste, bien spécifique)
de + à apprivoiser avec du <time> à passer dessus.

voir le code source PHP (uploadé à l'instant) du test à télécharger dans le post nommé :
--> "Ecrire et lire (sans blocage) sur un Port COM série RS232 en PHP sous console Windows."
voir également le post nommé :
--> "Outils logiciels sur RS232 pour créer des ports série virtuels.."

bonne lecture, A++ Did
0
Rejoignez-nous