Logiciel de caisse - Afficheur caisse VFD et TPE

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

25 sept. 2012, 10:01

vi donc un truc comme ça ?

Image

Avec soit le cas 1, où le l'écran est sur un port ethernet de la caisse,
soit le cas 2 ou l'écran est sur le réseau "global" ?

Et bien sur l'afficheur sur un port série de la caisse ?

si c'est bien cela, avec php tu ne peux pas agir sur le poste client (mais tu le sais déjà) donc il faut une solution alternative.

- Soit tu installe quelque chose coté client qui va pouvoir agir sur le port com (peux être un truc java ou flash qui va interagir avec du JS ?)
- Soit tu te démerde pour mettre le port à disposition sur le réseau => virtualisation de port (type moxa que j'ai indiqué avant). la solution est plus chère, mais plus simple coté dev.

Dans le second cas tu devras, comme pour le TPE, faire correspondre la caisse et le port com virtuel.

Dans le premier pas de soucis la conf est coté client et tu dois surement pouvoir imposer la conf matériel ?


Sinon une archi n-tiers avec un client lourd pour la caisse et un système de service coté serveur.


@+
Il en faut peu pour être heureux ......

Eléphanteau du PHP | 22 Messages

25 sept. 2012, 10:14

T'as tout compris, on est dans le cas 1: Tpe et afficheurs connectés au poste client.
Je sais qu'avec un activeX ou une applet on peut faire (je lance une frame intégrée à la page qui se ré-affiche sur le poste client à partir de php exécuté sur le serveur qui va utiliser l'activeX avec les éléments à afficher). Mais vu que je suis pas un pro sur C++ ou C#, je voulais éviter.

En tout cas merci pour ton dessin : clair et efficace.
Donc pas de solution alternative?

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

25 sept. 2012, 10:44

Ben la nan, soit tu ajoute du matos ou un soft pour virtualiser le port com sur le réseau, soit du code sur le post client.

Tu es sur un limite du web.

Par contre tu peux très bien faire ça avec un client lourd, relativement simple (avec java web start t'es pas emmerdé par les MAJ par exemple, ça se lance depuis le navigateur, c'est autonome). Je suppose que tu n'a pas beaucoup d'info a mettre sur l'écran, y a surement moiyen de garder l'achi serveur, via web service (par exemple soap en php ou changer de techno et sortir un EJB entité webservice) sur ton IHM tu appel le web service pour les infos, le calcul du montant est fait sur le client, l'envoi sur le TPE et le VFD est simplifié.

ça te permet aussi de ne pas devoir gérer les TPE depuis le serveur et de lever un risque de mélange entre les caisses.

La t'a un choix d'architecture à faire pas super simple vu l'avancé de ton projet.


@+
Il en faut peu pour être heureux ......

Eléphanteau du PHP | 22 Messages

25 sept. 2012, 10:54

Puisque j'ai pas le choix, J'imagine plutôt la création d'un applet java ou activeX qui enverra du texte sur le port COM du poste client. Pour cela, je pense utiliser ajax avec un envoi des lignes à afficher sur l'afficheur en POST ou GET du serveur vers une frame contenue dans la page web présente sur le client, récupération de ces variables dans la page contenue dans la frame qui seront utilisées par l'applet ou l'activeX qui enverra vers le port COM.

Je ferais un retour pour dire ce qu'il en est.

Petit nouveau ! | 3 Messages

15 oct. 2012, 15:04

Pourquoi ne pas relier tout les afficheures sur le serveur sur les différents port com :

afficheur de la caisse 1 sur port com 1

et detecté qui affiche quoi : par exemple caisse 1 a pour ip 192.168.0.10 quand caisse 1 affiche la page qui envois le montant, l'afficheur envois le montant sur le com 1.

Il y a moyen de mettre des extention de port com via une carte en pci sa vaut pas chere.

Eléphanteau du PHP | 22 Messages

15 oct. 2012, 15:14

On est vite limité :
les afficheurs sont sur les caisses (donc tirer du cable.....)
Sur un site avec 10 caisses.... pas pratique
Et il y a plus simple avec un activeX.

Eléphanteau du PHP | 45 Messages

15 oct. 2012, 21:12

Salut. Intéressant ton truc vu que suis en train de me monter une caisse sous Smartlaunch et une autre sous Fastcaisse.
Ce qui me turlupine, pourquoi afficher le prix caisse du VFD sur un autre poste?
C'est juste une question et en aucun cas un jugement car chacun a ses obligations ou organisations en matière de commerce.
Cdt.

Eléphanteau du PHP | 22 Messages

15 oct. 2012, 21:28

Bonjour, c'est pas ça. J'affiche le prix sur le VFD de la caisse auquel il est rattaché. Ma problématique est d'envoyer l'affichage sur le vfd de la caisse lorsqu'on est en mode client/serveur, car le php s’exécutant sur le serveur, il faut qu'il envoi l'affichage sur le poste client qui a fait la requête.

Petit nouveau ! | 3 Messages

15 oct. 2012, 22:08

Concernant le tpe j'ai pu avoir une doc pour les appareils ingenico : EFT Smart, EFT930, EFTSmart2,
iCT220, iCT250, iWL250
avec meme un exemple mais en windev :

Code : Tout sélectionner

ResConnect est un booléen sEnvoi est une chaîne="01000020001C09780000000000" ChaineLRC est un entier j est un entier TailleAsc est un entier=Taille(sEnvoi) NBEssai est un entier=0 sEnvoiParam est une chaîne ucCaratere est un entier LigneCom1 est un booléen //ResConnect=ConnectTPE() ResConnect=Vrai SI ResConnect=Vrai ALORS A_STX est une chaîne=Caract(2) A_ETX est une chaîne=Caract(3) A_EOT est une chaîne=Caract(4) A_ENQ est une chaîne=Caract(5) A_ACK est une chaîne=Caract(6) A_NAK est une chaîne=Caract(15) // Ouverture de COM1 LigneCom1 = sOuvre(1, 2000, 2000) SI LigneCom1 = Vrai ALORS BOUCLE RetChaine=sLit(1,sDansFileEntrée(1)) A FAIRE TANTQUE RetChaine="" //Réponse OK SI RetChaine=A_ACK ALORS //Construction Trame sEnvoiParam=A_STX sEnvoiParam+=sEnvoi sEnvoiParam+=A_ETX sEnvoiParam+=Caract(ChaineLRC) //Envoi Trame sEcrit(1,sEnvoiParam) Trace(sEnvoiParam) //Attente Réponse TPE BOUCLE RetChaine=sLit(1,sDansFileEntrée(1)) A FAIRE TANTQUE RetChaine="" //Réponse OK SI RetChaine=A_ACK ALORS //Fin de Transmission sEnvoiParam=A_EOT sEcrit(1,sEnvoiParam) Trace("Ok") SINON //Fin de Transmission sEnvoiParam=A_EOT sEcrit(1,sEnvoiParam) Trace("KO") FIN FIN Trace("FIN") SINON Trace("KO") FIN //Fermeture du port sFerme(1)
Si tu veux la doc envois moi ton mail en pv

Petit nouveau ! | 3 Messages

16 oct. 2012, 23:00

J'ai un peu avancé, grace à une class récupéré sur le net pour communiqué avec le port serie voici mon code :

pour l'instant le tpe me retourne comme message "fonction impossible" directement a l'ecrant donc il y a bien une interaction mais il ne reçois pas le montant pour l'instant, je continu :)

Code : Tout sélectionner

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("/dev/ttyS0"); $serial->confBaudRate(9600); //Baud rate: 9600 $serial->confParity("none"); //Parity (this is the "N" in "8-N-1") $serial->confCharacterLength(7); //Character length (this is the "8" in "8-N-1") $serial->confStopBits(1); //Stop bits (this is the "1" in "8-N-1") $serial->confFlowControl("none"); // Then we need to open it $serial->deviceOpen(); // To write into $serial->sendMessage(chr("05H")); // emande d'ouverture de session avec le tpe $serial->sendMessage(chr("02H")); // debut du message $serial->sendMessage(chr("01000020001109780000000000")); // caisse n°1 20€ en euros $serial->sendMessage(chr("03H")); // fin du message // Or to read from $read = $serial->readPort(); // If you want to change the configuration, the device must be closed $serial->deviceClose();