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

API, COM et SDKs Delphi Discussion :

Déchiffrer le protocole READY/BUSY


Sujet :

API, COM et SDKs Delphi

  1. #1
    Membre averti
    Homme Profil pro
    Automaticien embarqué marine marchande
    Inscrit en
    Février 2014
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Automaticien embarqué marine marchande
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2014
    Messages : 37
    Par défaut Déchiffrer le protocole READY/BUSY
    Bonjour, je cherche le moyen de remplacer mon imprimante OKI par une imprimante informatique avec delphi. Mais le protocole lu par l'OKI est READY/BUSY.
    Pouvez vous m'aider?
    Merci d'avance

  2. #2
    Expert confirmé
    Avatar de Ph. B.
    Homme Profil pro
    Freelance
    Inscrit en
    Avril 2002
    Messages
    1 786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2002
    Messages : 1 786
    Par défaut
    Bonjour,
    Citation Envoyé par marin1617 Voir le message
    je cherche le moyen de remplacer mon imprimante OKI par une imprimante informatique avec delphi. Mais le protocole lu par l'OKI est READY/BUSY.
    Ne voulez vous pas plutôt dire que vous voulez remplacer un imprimante matricielle par une imprimante graphique (laser, à jet d'encre, etc) ?
    Et la, sauf erreur de ma part, je crois que vous posez mal le problème, à savoir comment envoyer des données à l'imprimante ?
    Il vous faut oublier les concepts occupé/disponible (aka Ready/Busy) de l'imprimante et passer par les mécanismes communs à tous les pilotes d'imprimantes graphiques sous windows : dessiner dans un Canvas, que ce soit du texte, des éléments géométriques (ellipses, rectangles, etc), des images.

    Voila une base de départ pour tout cela : L'impression avec Delphi
    http://alphomega.developpez.com/imprimer/
    http://alphomega.free.fr/delphi/tuto.../Imprimer1.htm

  3. #3
    Membre averti
    Homme Profil pro
    Automaticien embarqué marine marchande
    Inscrit en
    Février 2014
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Automaticien embarqué marine marchande
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2014
    Messages : 37
    Par défaut
    Bonjour, en fait je cherche effectivement à remplacer une imprimante matricielle OKI mais par un PC avec delphi qui li ce qui arrive sur le port com. Mais comme je ne connais pas comment lire ce protocole, je ne reçois que des caractères spéciaux! Avez vous une idée
    Cordialement

  4. #4
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 938
    Billets dans le blog
    6
    Par défaut
    Quel est le mode de l'imprimante (exemple pour une FX890) ? Emulation Epson LQ ? IBM ProPrinter ?
    Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
    . Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !

  5. #5
    Membre averti
    Homme Profil pro
    Automaticien embarqué marine marchande
    Inscrit en
    Février 2014
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Automaticien embarqué marine marchande
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2014
    Messages : 37
    Par défaut
    Bonjour tourlourou,
    Excuse pour la réponse tardive, petit pb d'internet
    Elle fonctionne avec le driver oki ML 280 Elite (IBM).

  6. #6
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 938
    Billets dans le blog
    6
    Par défaut
    Je lis ici qu'elle peut émuler IBM graphics (autres références ici et , par exemple).

    Voilà les caractères spéciaux et leurs significations.
    Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
    . Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !

  7. #7
    Membre averti
    Homme Profil pro
    Automaticien embarqué marine marchande
    Inscrit en
    Février 2014
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Automaticien embarqué marine marchande
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2014
    Messages : 37
    Par défaut
    Bonjour Tourlourou,
    J'ai consulté les sites que tu m'a indiqué mais ils ne m'aiderons pas!
    Je te joint un .doc qui montre ce que je reçois avec mon appli delphi et un .pdf qui montre ce que reçois l'imprimante lors d'un test d'impression, tu comprendra mieux mon pb
    Fred
    Images attachées Images attachées
    Fichiers attachés Fichiers attachés

  8. #8
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 938
    Billets dans le blog
    6
    Par défaut
    Il faudrait voir le test dans un éditeur Hexa : sauve le Memo dans un fichier .txt et poste-le.
    Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
    . Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !

  9. #9
    Membre averti
    Homme Profil pro
    Automaticien embarqué marine marchande
    Inscrit en
    Février 2014
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Automaticien embarqué marine marchande
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2014
    Messages : 37
    Par défaut
    Je te file le code en même temps :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    unit Unit1;
     
    interface
     
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, ExtCtrls, CPort, CPortCtl, ComCtrls, jpeg, Menus;
     
    type
      TForm1 = class(TForm)
        ComPort1: TComPort;
        Timer1: TTimer;
        ComLed3: TComLed;
        Label3: TLabel;
        Timer2: TTimer;
        Button2: TButton;
        Edit1: TEdit;
        Edit2: TEdit;
        Image1: TImage;
        Button4: TButton;
        Label12: TLabel;
        Label13: TLabel;
        Label14: TLabel;
        Memo: TMemo;
        MainMenu1: TMainMenu;
        Fichier1: TMenuItem;
        Quitter1: TMenuItem;
        Aide1: TMenuItem;
        procedure Timer1Timer(Sender: TObject);
        procedure FormCreate(Sender: TObject);
        procedure Timer2Timer(Sender: TObject);
        procedure ComPort1RxChar(Sender: TObject; Count: Integer);
        procedure Button2Click(Sender: TObject);
        procedure Button4Click(Sender: TObject);
        procedure MemoChange(Sender: TObject);
        procedure Quitter1Click(Sender: TObject);
        procedure Aide1Click(Sender: TObject);
     
      private
        { Private declarations }
      public
        { Public declarations }
      end;
     
    var
      Form1: TForm1;
      AllowedDateTime: string;
      NomFich: string;
      NomFich1: string;
      Ext: string;
      LegalDateTime : string;
    implementation
     
    {$R *.dfm}
     
     
     
    procedure TForm1.Timer1Timer(Sender: TObject);  // Gestion du Port Com
    begin
     If  comport1.Port = 'COM1'
      Then
         begin
            comport1.SetDTR(true);  // met à l'état de travail "0" la sortie DTR (+10V)
            comport1.SetRTS(true); // met à l'état de travail "0" la sortie RTS (+10V)
         end
          Else
            begin
              comport1.SetDTR(false) ;
              comport1.SetRTS(false);
           end;
     end;
     
    procedure TForm1.FormCreate(Sender: TObject);
    begin
    Timer1.Enabled:=true;
    Application.Title:='Alarmes CMR';
     
    end;
     
    // Retourne un string sous la forme "ddmmyyyyhhmmss" :
    function AllowedStrDateTime(const sDate, sTime: string): string;
    var
      AllowedStrDate, AllowedStrTime: string;
    begin
      AllowedStrDate := Copy(sDate, 1 , 2) +' '+ Copy(sDate, 4, 2) +' '+ Copy(sDate, 7, 4);
      AllowedStrTime := Copy(sTime, 1, 2) +'H'+ Copy(sTime, 4, 2) +'min'+ Copy(sTime, 7, 2)+'s';
      Result := AllowedStrDate + ' à ' + AllowedStrTime;
    end;
     
    procedure TForm1.Timer2Timer(Sender: TObject);// gestion de date et heure, Enregistrement Auto
     const EnregistAuto=('00:00:00');
     
     Begin
    label14.Caption := FormatDateTime('dddddd tt', Now);
    Edit1.Text := DateToStr(Date);
    Edit2.Text := TimeToStr(Time);
      if Edit2.Text = EnregistAuto then
          begin
             // envoi sur un disque local
              NomFich := 'E:\page test.txt ';
              Ext := ExtractFileExt(NomFich);
              Delete(NomFich, Pos(Ext, NomFich), Length(Ext));
              AllowedDateTime := AllowedStrDateTime (Edit1.Text,Edit2.Text);
              NomFich := Format('%s   %s   %s', [NomFich, AllowedDateTime, Ext]);
              Memo.Lines.SaveToFile(NomFich);
              label12.Visible := true;
              label12.Caption := AllowedDateTime;
     
           {   // envoi sur le disque X du réseau
               NomFich1 := 'X:\02 - Chef Mécanicien\Alames machine\Alarmes machine.txt ';
               Ext := ExtractFileExt(NomFich1);
               Delete(NomFich1, Pos(Ext, NomFich1), Length(Ext));
               AllowedDateTime := AllowedStrDateTime(Edit1.Text,Edit2.Text);
               NomFich1 := Format('%s   %s   %s', [NomFich1, AllowedDateTime, Ext]);
               Memo.Lines.SaveToFile(NomFich1);
               memo.Clear ();       }
      end;
     
    end;
     
    procedure TForm1.ComPort1RxChar(Sender: TObject; Count: Integer);  // Gestion de lecture du port Com
    var mess : string;
    begin
    comport1.ReadStr(mess,count);
    memo.Lines.Text:= memo.Lines.Text + mess;
    end;
     
    procedure TForm1.Button2Click(Sender: TObject);
    begin
     showmessage('Nb de lignes  ' + inttostr(memo.lines.Count)) ;
    end;
     
    procedure TForm1.Button4Click(Sender: TObject);
    begin
    // envoi sur un disque local
      NomFich := 'E:\page test.txt ';
      Ext := ExtractFileExt(NomFich);
      Delete(NomFich, Pos(Ext, NomFich), Length(Ext));
      AllowedDateTime := AllowedStrDateTime (Edit1.Text,Edit2.Text);
      NomFich := Format('%s   %s   %s', [NomFich, AllowedDateTime, Ext]);
      Memo.Lines.SaveToFile(NomFich);
      label12.Visible := true;
      label12.Caption := AllowedDateTime;
    {// envoi sur le disque X du réseau
      NomFich1 := 'X:\02 - Chef Mécanicien\Alames machine\Alarmes machine.txt ';
      Ext := ExtractFileExt(NomFich1);
      Delete(NomFich1, Pos(Ext, NomFich1), Length(Ext));
      AllowedDateTime := AllowedStrDateTime(Edit1.Text,Edit2.Text);
      NomFich1 := Format('%s   %s   %s', [NomFich1, AllowedDateTime, Ext]);
      Memo.Lines.SaveToFile(NomFich1);  }
     
    End;
     
    procedure TForm1.MemoChange(Sender: TObject);
    begin
    SendMessage(Memo.Handle,WM_VSCROLL,SB_BOTTOM,0); // Permet au scrollBar de se positionner en bas du memo
    end;
     
    procedure TForm1.Quitter1Click(Sender: TObject);
    begin
     comport1.SetDTR(false);   // met à l'état de repos "1" la sortie DTR (-10V)
     comport1.SetRTS(false);   // met à l'état de repos "1" la sortie RTS (-10V)
     comport1.Connected:=false;
     close;
    end;
     
    procedure TForm1.Aide1Click(Sender: TObject);
    begin
    showmessage ('Enregistrement sur le ''E:\Journal alarmes CMR\alarmes machine.txt '' et ''X:\02 - Chef Mécanicien\Alarmes machine\Alarmes machine.txt ''à chaque passage à 0h, mais il est possible d''effectuer un enregistrement immediat avec la touche enregistrement.');
    end;
     
    end.
    Fichiers attachés Fichiers attachés

  10. #10
    Membre averti
    Homme Profil pro
    Automaticien embarqué marine marchande
    Inscrit en
    Février 2014
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Automaticien embarqué marine marchande
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2014
    Messages : 37
    Par défaut
    Bonjour Tourlourou,
    Est ce que ce que j'ai posté te donne une idée?

  11. #11
    Membre averti
    Homme Profil pro
    Automaticien embarqué marine marchande
    Inscrit en
    Février 2014
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Automaticien embarqué marine marchande
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2014
    Messages : 37
    Par défaut
    Bonjour à tous,
    Après différents tests, je me suis rendu compte qu'en fait, la pace pour mon libellé n'était pas suffisante, et que donc elle se superpose avec la valeur du seuil!!
    Je vais reformulé mon pb dans une autre discussion.
    Merci

Discussions similaires

  1. protocol modbus
    Par greatboy dans le forum Développement
    Réponses: 7
    Dernier message: 21/01/2008, 10h58
  2. envoi de mail, protocol SMTP langage C
    Par Heimdall dans le forum Développement
    Réponses: 2
    Dernier message: 23/05/2003, 11h22
  3. le protocole snmp
    Par stephy dans le forum Développement
    Réponses: 4
    Dernier message: 06/12/2002, 20h55
  4. Quelle est la fiabilité du protocole SSL ?
    Par Anonymous dans le forum Développement
    Réponses: 5
    Dernier message: 05/09/2002, 13h31
  5. Réponses: 2
    Dernier message: 31/08/2002, 21h37

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