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

C++Builder Discussion :

impression de courbe en continu


Sujet :

C++Builder

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    160
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 160
    Par défaut impression de courbe en continu
    Bonjour, je cherche un example de code ou un tutorial , ou un conseil pour imprimer en continu.

    Voici le probleme, j'ai un canvas qui se remplit ligne par ligne, c'est une sorte de plotter qui dessine des courbes.

    Je voudrais pouvoir imprimer en continu (sur du papier continu (et donc sans doute avec une imprimant matricielle)) chaque ligne pour que la courbe sorte de l'imprimante.

    Vous voyez ce que je veux dire.

    Un peu comme un électrocardiogramme, ou encore un relevé sysmographique...

    Je dois avouer que je ne sais pas du tout comment 'y prendre.

    Merci.

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    160
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 160
    Par défaut
    aurais-je posé la question sous une forme rebutante?
    Ou bien n'y a t-il pas de solution?
    Ou bien est-ce si simple que je me marche dessus en postant?

    Bon je sais ca fait un peu up et saymal.
    Mais je ne le ferais plus promis.

    Simplement je me dis qu'une bonne ame a peut etre déjà étée confrontée au probleme.

  3. #3
    Expert confirmé

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Billets dans le blog
    3
    Par défaut
    La forme est rebutante sans doute
    Et personnellement je ne comprends rien de ce que tu dis:
    j'ai un canvas qui se remplit ligne par ligne, c'est une sorte de plotter qui dessine des courbes.
    C'est quoi un "canvas" ?
    Une 'sorte' de plotter ? Ca peut donc revenir en arriere ? Quelle est la différence ?
    Dessine comment ? Par pixel ? OpenGL ? En mode texte ?
    Quel type de courbe ?
    Et comment tu l'as ce canvas ? Avec quel type de programme ? sous quel OS ?

    Je voudrais pouvoir imprimer en continu (sur du papier continu (et donc sans doute avec une imprimant matricielle)) chaque ligne pour que la courbe sorte de l'imprimante.
    Une impression c'est toujours en continu... je vois pas le truc.
    Chaque ligne de quoi ?


    En gros ce que j'ai compris c'est que tu as un programme en ligne de commande, qui affiche une courbe en mode texte ligne par ligne, et tu veux l'imprimer... dans ce cas, en général, il suffit de rediriger "l'affichage" sur l'imprimante...
    Si c'est un programme en ligne de commande, c'est encore plus simple: toto.exe >PRT:
    Et sous Linux ca doit certainement être pareil.

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    160
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 160
    Par défaut
    LooooooL bon ok je vais essayer d'etre plus clair...

    [OS] Windows XP comme le suggère le [Borland] dans le titre. (papy borland fait de la résistance)

    Donc je ne suis pas en mode console.
    Je n'utilise pas OpenGL (mais ce ne serait peut etre pas une mauvaise idée... Enfin pour l'instant, je ne l'utilise pas)

    Le canvas est une classe (TCanvas) sans doute spécifique aux EDI Borland.
    Cette classe permet de manipuler un contexte graphique (DC). Elle libère l'informatitien qui tend à se rapprocher de l'être humain de basses considérations comme récupérer un handle sur le contexte, traiter les erreurs, elle "encapsule" aussi les fonctions de dessins de l'API (windows donc) au sein d'une couche moins barbare pour manipuler ce contexte.

    Mais là encore le [Borland] du titre était (du moins je le croyais) fait pour éclairer cela.


    Je dessine par pixel.
    et je peux revenir en arrière sur l'ecran...
    Mais en fait je triche... J'affiche un second graphique qui lit un buffer pendant que mon canvas continue de se remplir (sans s'afficher car il est caché)

    Mais evidemment, comme je ne suis pas complettement débile, je n'ai pas besoin que les lutins qui vivent dans l'imprimante fasse rerentrer la feuille pour effacer les courbes et me ressortent le buffer.

    Non l'imprimante continue a cracher la courbe telle qu'elle est envoyée au canvas.

    Quel type de courbe... Euhh... Ben... Comment dire, le genre qui n'est pas droite.

    Bon serieusement je fais de l'acquisition sur des capteurs (pleins) et je fais des touilles mathématiques horribles ... Ensuite ca me donne une valeur qui s'affiche à l'écran sur une grille qui ressemble a du papier millimétré. (que je dessine moi meme... sur un canvas donc)...

    L'echelle en y c'est le temps et l'echelle en x ma valeur

    C'est donc une courbe en 2 D qui s'affiche verticalement et qui scroll bien gentiment quand on est en bas de l'écran.

    J'ai donné l'exemple du sysmographe... Pour qu'on puisse imaginer a quoi ca ressemble.

    Une impression c'est toujours en continu... je vois pas le truc.
    Chaque ligne de quoi ?
    Bon effectivement là je me suis mal expliqué.
    En fait une imprimante, lorsqu'on passe par les voies habituelles (sous windows) se charge avec un buffer et imprime le buffer.

    Je ne veux pas de cela.

    Quand une ligne se dessine sur mon canvas (donc pour simplifier une ligne pourrait se représenter par un paquet de pixels blancs, un disons un pixel de couleur qui représente la valeur à l'instant t de la courbe, suivit d'un paquet de pixel blancs... En fait c'est beaucoup plus compliqué mais bon...), je veux que l'imprimante imprime cette ligne... Et ne crache pas le reste de la feuille.

    En fait elle va avancer d'une ligne elle aussi et quand la deuxieme sera prette à l'ecran l'imprimer et ainsi de suite jusqu'a la fin des temps.

    Comme l'imprimante est chargée avec du papier continu (pas du feuille a feuille donc)...

    Au bout de 2 heures tu as un km de papier représentant un courbe magnifique.

    C'est grosso modo ce qu'on appelle un plotter.
    C'est ce que je voulais dire par impression continue.

    J'essaye d'etre plus clair mais c'est vrai que c'est pas evident d'expliquer ca vu qu'aujourd'hui toutes les imprimantes font du feuille à feuille.

    En gros ce que j'ai compris c'est que tu as un programme en ligne de commande, qui affiche une courbe en mode texte ligne par ligne, et tu veux l'imprimer... dans ce cas, en général, il suffit de rediriger "l'affichage" sur l'imprimante...
    Si c'est un programme en ligne de commande, c'est encore plus simple: toto.exe >PRT:
    Et sous Linux ca doit certainement être pareil.

    Merci du conseil, mais 1) je suis sous windows 2) en mode graphique 3) je sais rediriger la sortie standard 4) si c'était si facile, je ne posterais pas une question.

    Non la tache me semble autrement plus ardue.

    A priori elle me semble impossible avec une imprimante classique (jet d'encre ou laser)

    C'est pourquoi j'ai parlé d'imprimante matricielle.

    Ensuite, il faut la piloter d'une manière très spéciale.

    Mais c'est là que le bas blesse, je ne sais pas comment.

    Je viens de finir l'ecriture d'un driver pour le port LPT1 qui me permet de faire des read byte et des write byte sur ce port...

    Par contre je ne sais pas quoi envoyer à l'imprimante.

    Je pense que seuls quelques "anciens" et peut etre un ou deux geeks amateurs d'oridinausores peuvent répondre car ce mode de fonctionnement a presque complettement disparut depuis la fin des années 90.

    Malheureusement j'ai un client qui se fait insistant sur la question.

    Voilà...
    Alors c'estypomieuxkomca?

  5. #5
    Membre éprouvé
    Inscrit en
    Octobre 2006
    Messages
    132
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 132
    Par défaut
    Bonjour darkvadr,

    Je fais face à un problème simillaire au tiens où je dois imprimer en continue avec une imprimante matricielle. Je ne sais pas trop non plus par où débuter...
    ...je me permets donc de te demander si tu as su solutionner ton problème.

    Merci!

  6. #6
    Membre émérite
    Avatar de Interruption13h
    Inscrit en
    Août 2005
    Messages
    603
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 603
    Par défaut Piloter une imprimante
    Salut !

    Citation Envoyé par darkvadr Voir le message
    Je viens de finir l'ecriture d'un driver pour le port LPT1 qui me permet de faire des read byte et des write byte sur ce port...

    Par contre je ne sais pas quoi envoyer à l'imprimante.
    J'ai jamais manipuler une imprimante en écrivant directement sur le port, Mais je suis presque sûre que ça peut se faire, ça demande juste la connaissance du protocol utilisé pour imprimer.

    Si on prend le cas du port parallèle , j'imagine que pour imprimer en continu, il faudera par exemple envoyer à un interval donné les point à imprimer, et sauter une ligne à chaque fois (tout en attendant le ACK (aquittement depuis l'imprimante...etc)).

    Reste à savoir si l'imprimante est aussi accéssible que ça et surtout si l'OS utilisé te le permet; je me souviens lorsque je voulais piloter ce port à ma guise sous XP, c'était la galère, mais j'ai réussi enfin du compte .

    Espérant t'avoir aider,
    A+

  7. #7
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    160
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 160
    Par défaut
    Voilà ou j'en suis, je me suis écris un driver de port sous XP et je peux donc piloter le port LPT1 à ma guise...

    Maintenant y'a plus qu'a savoir quoi envoyr dessus.
    Et là...

Discussions similaires

  1. transformation points discontinus en courbe continue
    Par Décembre dans le forum Algorithmes et structures de données
    Réponses: 18
    Dernier message: 01/07/2010, 19h09
  2. Impression en papier continu sous delphi5
    Par zaki64 dans le forum QuickReport
    Réponses: 2
    Dernier message: 10/11/2009, 12h12
  3. [AC-2007] impression champ mémo en continu
    Par marcus275 dans le forum IHM
    Réponses: 1
    Dernier message: 24/05/2009, 09h22
  4. impression avec papier continu
    Par sofien dans le forum IHM
    Réponses: 5
    Dernier message: 31/05/2008, 14h25
  5. Réponses: 1
    Dernier message: 13/12/2006, 09h04

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