IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Delphi Discussion :

Commandes ESC/POS en paramètres


Sujet :

Langage Delphi

  1. #1
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 277
    Points : 41 688
    Points
    41 688
    Billets dans le blog
    64
    Par défaut Commandes ESC/POS en paramètres
    Bonjour,

    Comment faire pour proposer a un utilisateur lambda un moyen simple pour paramétrer un logiciel pilotant un périphérique ESC/POS ?

    par exemple : la séquence d'ouverture d'une caisse dépends beaucoup de ... l'imprimante et ou de la caisse branché voir ce doc en référence
    Or , je ne vois pas un utilisateur non geek parametrer ce genre de séquence
    27,112,48,55,121
    quoique ....

    Question subsidiaire , que stocker dans une variable d'un fichier Ini ?
    1. la séquence de chiffre ci-dessus
    2. le 'binaire' correspondant
    3. Autre ?

    et récupérer ça correctement (j'ai toujours quelques pb avec l'unicode ) pour envoyer sur le port COM ?

  2. #2
    Membre chevronné Avatar de chaplin
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 215
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 215
    Points : 1 819
    Points
    1 819
    Par défaut
    Tu créés un assistant duquel tu récupère les informations que tu stockes:
    • soit dans un fichier .ini
    • soit dans un fichier au format xml
    • soit dans la base de registre (aléatoire)
    • soit dans une base de données centralisée


    A une époque, je travaillais sur un logiciel pour lequel il y avait plusieurs possiblités de sauvegarde: support de stockage USB, DD internes, lecteur de disquette, internet.

    Etant satuté des questions récurrentes des utilisateurs, on a créé un assistant, et depuis ce jour, on était tranquille.

  3. #3
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 710
    Points : 25 596
    Points
    25 596
    Par défaut
    C'est quoi un utilisateur lambda ?
    En général, les applications ne sont pas installés par l'utilisateur, si la société a une taille suffisante, elles ont un service informatique, ou alors lors de l'achat du matériel ou logiciel, il y a une assistance technique externe !
    Le tout payant évidemment ! Dans les 6 boites où j'ai travaillé l'assistance au déploiement ou même de l'info-gérance était pratiqué, cela générait un CA non négligeable ! Le service étant même parfois plus rentable que la vente de logiciel !

    Quoi qu'il arrive, il faut toujours guider l'utilisateur, pour l'empêcher d'écrire n'importe quoi !
    Un petit écran de configuration bien propre c'est le mieux, il est évidemment que l'on ne fait pas saisir un suite de chiffre avec délimiteur, mieux vaut une ListBox, un bouton Ajouter\Supprimer et un Edit pour saisir chiffre par chiffre !
    Si le nombre de chiffre est prédéfini (comme une IP), tu peux mettre autant de TEdit qu'il le faut (comme les numéro de série lors d'une install)

    Tu peux aussi prévoir un dictionnaire de valeur, comme dans ta doc, ainsi au lieu de taper une série de chiffre, il suffit d'utiliser un ComboBox énumérant les Modèles !
    Pour l'utilisateur, choisir le modèle de son imprimante sera pas trop difficile !
    Si le modèle n'existe pas, tu peux ouvrir un menu avancé pour ajouter des modèles personnalisés pour saisir les codes manuellement (on en revient à la ListBox)

    Personnellement, j'ai fait comme cela pour la gestion de Camera\DVR, l'utilisateur choisi la marque et modèle, ensuite cela utilise le bon protocole pour discuter avec le périphérique !
    Le choix du modèle va prédéfinir un ensemble de paramètre (certains périphériques fournissent de très bon SDK qui permettent un auto-detect, un peu comme le Plug'n'Play)

    D'ailleurs, tu ne pourrais pas toi même détecter le modèle connecté via la driver installé ?

    Pour le stockage, un Ini contenant toute la chaine puis TStringList.CommaText, c'est une solution basique !
    En plus c'est facile à maintenir !
    Tu n'as pas de bases de données embarquées ? même pas un MyBase avec le TClientDataSet ?

    le binaire a stocké c'est plus pénible, il te faudrait un fichier dédié à cela (ne pas mélanger binaire et texte par exemple)
    Un TFileStream couplé à TBinaryReader.ReadByte
    un BLOB dans la DB sera tout à fait approprié !

    Tient dans ce sujet, j'ai comparé le TBinaryReader et l'utilisation brut du TFileStream en XE2 justement : Ecriture et Lecture de fichiers binaire avec « fonctions de haut niveau » sous Borland C++ Builder XE

    J'ai aussi joué avec le ANSI et l'UNICODE pour voir ce que cela donnait !


    Si tu es en Delphi Unicode, utilise RawByteString pour stocker tes données binaires ou mieux un simple TByteDynArray (ou TBytes)

  4. #4
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 277
    Points : 41 688
    Points
    41 688
    Billets dans le blog
    64
    Par défaut
    Citation Envoyé par ShaiLeTroll Voir le message
    En général, les applications ne sont pas installés par l'utilisateur, si la société a une taille suffisante, elles ont un service informatique, ou alors lors de l'achat du matériel ou logiciel, il y a une assistance technique externe !
    Le tout payant évidemment ! Dans les 6 boites où j'ai travaillé l'assistance au déploiement ou même de l'info-gérance était pratiqué, cela générait un CA non négligeable ! Le service étant même parfois plus rentable que la vente de logiciel !
    Tout a fait d'accord . Mais le contexte Grosse Société / Assistance technique etc.. n'est pas envisageable dans ce cas et ce sera déjà beau si j'ai un accès internet ....... d'ou mon choix de paramétrer un max et de pouvoir faire modifier une configuration

    Si le nombre de chiffre est prédéfini (comme une IP), tu peux mettre autant de TEdit qu'il le faut (comme les numéro de série lors d'une install)
    Helas non , puisque dépendant de l'imprimante (marque/modele)

    Tu peux aussi prévoir un dictionnaire de valeur, comme dans ta doc, ainsi au lieu de taper une série de chiffre, il suffit d'utiliser un ComboBox énumérant les Modèles !
    Pour l'utilisateur, choisir le modèle de son imprimante sera pas trop difficile !
    Si le modèle n'existe pas, tu peux ouvrir un menu avancé pour ajouter des modèles personnalisés pour saisir les codes manuellement (on en revient à la ListBox)
    je n'y avais pas pensé !! mais je ne pensais pas seulement à l'ouverture du tiroir ^^ ! cette séquence n'était qu'un exemple

    en fait, a long terme , j'envisage une conversion d'un RichEdit vers une Imprimante ticket (et donc la gestion des Gras,italiques etc....)


    D'ailleurs, tu ne pourrais pas toi même détecter le modèle connecté via la driver installé ?
    ceci s'il y a driver , mais en cas de passage direct via le port (sous Linux par exemple)

    Tu n'as pas de bases de données embarquées ?
    Bien sur qu'il y a SGBD , mais je n'avais pas prévu de stocker une configuration poste dans une table , jusqu'à ce stade le ini suffisait amplement pour la partie poste de travail (depuis une étude approfondi des registres j'abhorre leurs utilisation, quel souk)

  5. #5
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 710
    Points : 25 596
    Points
    25 596
    Par défaut
    Avec Vista\Seven, les ini, ça devient tellement pénible !
    J'en utilise encore beaucoup (plus de 100 ini dans le projet que je maintiens, c'est fort lourd, même les SQL sont dedans )

    J'utilise de plus en plus une configuration par Login (pour les préférences utilisateurs) et un conf par "Nom de Machine" pour les préférences comme les chemins, port ...
    Et cela directement dans la DB !

    Ou alors un fichier CFG qui est un soit un XML de TClientDataSet, ou une DFM d'un objet hérité d'un TComponent, c'est très pratique pour manipuler de la conf, tu as juste un objet à charger avec un Stream et ça se fait tout seul

    Citation Envoyé par ShaiLeTroll Voir le message
    Cu peux aussi prévoir un dictionnaire de valeur, comme dans ta doc, ainsi au lieu de taper une série de chiffre, il suffit d'utiliser un ComboBox énumérant les Modèles !
    Pour l'utilisateur, choisir le modèle de son imprimante sera pas trop difficile !
    Citation Envoyé par SergioMaster Voir le message
    je n'y avais pas pensé !! mais je ne pensais pas seulement à l'ouverture du tiroir ^^ ! cette séquence n'était qu'un exemple

    en fait, a long terme , j'envisage une conversion d'un RichEdit vers une Imprimante ticket (et donc la gestion des Gras,italiques etc....)
    Dans la DB, tu as une table contenant TOUS les codes opérations par modèle !
    L'utilisateur choisi son modèle dans une combobox, toi automatiquement tu connais tous les codes d'opérations !
    C'est simple à configurer, cela garanti l'exactitude des données !
    tu pourras aussi gérer par modèle les limitations techniques (ou gérer des solutions de contournement)

    En fait, j'aurais plusieurs tables
    Models - (IDModel, ModelName)
    Codes - (IDCode, CodeValue)
    Operations (IDOperation, OperationName)
    ModelOperationCode - (IDModel, IDOperation, IDCode, FlagAllowed)

    CodeValue contient 128,57,...
    Operations contient OpenDoor, SetBold, SetItalic ... cela pourrait une simple énumération, c'est plus pour une cohérence des données, cela énumère les possibilités
    En utilisant plusieurs tables cela évite la répétition des séquences !

    Tu peux ainsi facilement trouver pour un modèle donné et une opération donnée, la séquence binaire adéquate !

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT Codes.CodeValue FROM Codes C
    INNER JOIN ModelOperationCode MCO ON (C.IDCode = MCO.IDCode)
    INNER JOIN Models M ON (M.IDModel = MCO.IDModel)
    INNER JOIN Operations O ON (O.IDOperation = MCO.IDOperation)
    WHERE O.OperationName = "OpenDoor"
    AND M.ModelName = "Citizen CBM-230"

Discussions similaires

  1. Impression ticket posligne (applet) : envoyer commandes ESC
    Par Harold_le_Rouge dans le forum Langage
    Réponses: 5
    Dernier message: 28/04/2013, 17h10
  2. Réponses: 0
    Dernier message: 23/09/2011, 14h28
  3. comment envoyer commande ESC/POS
    Par danou07200 dans le forum C#
    Réponses: 1
    Dernier message: 07/11/2010, 21h06
  4. Commandes WPF avec plusieurs paramètres
    Par helper_moi dans le forum Windows Presentation Foundation
    Réponses: 15
    Dernier message: 15/06/2010, 17h41
  5. séquence d'échapement dynamique (ESC/POS)
    Par laurentleroy dans le forum C
    Réponses: 1
    Dernier message: 24/05/2006, 14h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo