Quand le repos cause une erreur fatale

Le
Regis
Bonjour a tous,

Je voudrais vous soumettre un algo, peu importe la version de Windev
(dans un premier temps) :
___

Procedure Repos(CSeconde)

Si CSeconde = 0 alors retour

TempsActuel est un entier long
TempsEspere est un entier long

TempsActuel = HeureVersEntier(HeureSys())
TempsEspere = TempsActuel + CSeconde

Tantque TempsActuel < TempsEspere
TempsActuel = HeureVersEntier(HeureSys())
Fin
___

Generalement, en mettant CSeconde a 100, je crois obtenir une pause de 1
seconde, enfin je crois car la pause se fait a peu pres de ce temps la,
or cette pause est destinee a doser le debit d'une imprimante
matricielle tickets de caisse, car en balancant ca tout de go,
l'impression se tronque car le buffer est submergé.

Or, au bout de 160 tickets ou donc 160 passages dans cette procedure,
sous Windows, j'ai une erreur fatale que je ne m'explique pas.

Pouvez vous tester cette forme d'algo et me dire ce qu'il en est chez
vous, car je commence vraiment a douter, soit du materiel, soit de cette
programmation, a moins qu'il existe une methode differente pour faire
une pause dans le debit de l'impression ?!?

Merci d'avance,

Amicalement,

Régis.

--
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Yves Bourhis
Le #19071971
Bonjour,

Regis a écrit :
Pouvez vous tester cette forme d'algo et me dire ce qu'il en est chez
vous, car je commence vraiment a douter, soit du materiel, soit de cette
programmation, a moins qu'il existe une methode differente pour faire
une pause dans le debit de l'impression ?!?



Et en utilisant les fonctions "chrono", du style :

ChronoDebut()
TANTQUE ChronoValeur() < 100 // Pour la tempo.
FIN
ChronoFin()
Romain PETIT
Le #19071961
Yves Bourhis avait énoncé :
Bonjour,



Bonjour,

Regis a écrit :
Pouvez vous tester cette forme d'algo et me dire ce qu'il en est chez
vous, car je commence vraiment a douter, soit du materiel, soit de cette
programmation, a moins qu'il existe une methode differente pour faire
une pause dans le debit de l'impression ?!?





Et en utilisant les fonctions "chrono", du style :



Multitache(-xxx) ne convient pas ?

A+

--
Romain PETIT
contact : http://cerbermail.com/?O16kfXOFcq
+-+ posté sur Usenet avec MesNews et non depuis un forum web +-+
news:fr.comp.developpement.agl.windev
http://www.mesnews.net/
http://fr.wikipedia.org/wiki/Newsgroup
Regis
Le #19075471
Romain PETIT a écrit :
Multitache(-xxx) ne convient pas ?



Comment modeliserais tu l'attente ? Du moins en fonction de ce que j'ai
saisi comme algo...

Merci Romain,

Pour Chrono(), je parlais tout Windev confondu, c'est a dire avec la
fonction ou la procedure la plus simple.

Amicalement,

Régis.

--
jacques Trepp
Le #19075991
Bonjour,

ça arrive quelques fois lorsque le buffer est saturé. Plusieurs pistes :
diminuer la vitesse (passer à 1200 bauds)
utiliser le protocole Xon/Xoff : quand le buffer est plein, l'imprimante
envoie Xoff au port série , la temps de vider son buffer, puis renvoie un
Xon.
Normalement, ça devrait âtre géré par le DSR ... ton cable est correct ?

ça me parait scabreux d'être obligé de gérer la gestion de buffer avec
windev, quand on a une imprimante qui est censée le faire.

cordialement

PS : cable Xon/Xoff :
TR ---> RC
RC ---> TR
Masse ---> masse


"Regis" news:49db66f4$0$17084$
Bonjour a tous,

Je voudrais vous soumettre un algo, peu importe la version de Windev
(dans un premier temps) :
___

Procedure Repos(CSeconde)

Si CSeconde = 0 alors retour

TempsActuel est un entier long
TempsEspere est un entier long

TempsActuel = HeureVersEntier(HeureSys())
TempsEspere = TempsActuel + CSeconde

Tantque TempsActuel < TempsEspere
TempsActuel = HeureVersEntier(HeureSys())
Fin
___

Generalement, en mettant CSeconde a 100, je crois obtenir une pause de 1
seconde, enfin je crois car la pause se fait a peu pres de ce temps la,
or cette pause est destinee a doser le debit d'une imprimante
matricielle tickets de caisse, car en balancant ca tout de go,
l'impression se tronque car le buffer est submergé.

Or, au bout de 160 tickets ou donc 160 passages dans cette procedure,
sous Windows, j'ai une erreur fatale que je ne m'explique pas.

Pouvez vous tester cette forme d'algo et me dire ce qu'il en est chez
vous, car je commence vraiment a douter, soit du materiel, soit de cette
programmation, a moins qu'il existe une methode differente pour faire
une pause dans le debit de l'impression ?!?

Merci d'avance,

Amicalement,

Régis.

--


Regis
Le #19075981
Regis a écrit :
Romain PETIT a écrit :
Multitache(-xxx) ne convient pas ?






Peut etre par exemple :
___

Procedure Repos(CSeconde)

SI CSeconde = 0 alors retour

MutlTache(-CSeconde)

___

?
Regis
Le #19076331
jacques Trepp a écrit :
../..
ça me parait scabreux d'être obligé de gérer la gestion de buffer avec
windev, quand on a une imprimante qui est censée le faire.



Oh, tu sais, le probleme vient uniquement quand on sort le Z de caisse,
il y a tellement de categories, que l'imprimante "s'estouffe", donc, une
petite pause du genre multitache(-100) (pause d'une seconde) entre deux
IImprime(), ce n'est ce que j'appelerais "gerer le buffer de
l'imprimante", c'est deja moins complique que ca.

En fait, le programme en question, developpé pour de vieux ordinateurs
que je dediais comme caisses enregistreuses, maintenant on achete, sans
faire de pub, chez Dell, pour 453 euros, un dual core avec 3 Go de DDR2,
alors que mes vieilles biques ne necessitaient que 4 Mo de RAM pour
faire fonctionner le programme, donc c'est dire si maintenant ca booste
fort, le programme (toujours vetuste) fonctionne a la vitesse lumiere
sur les nouveaux PC, mais bon, comme je disais par ailleurs, faudra que
je les passe sous WD12.

Amicalement,

Régis.

P.S. : le projet des caisses enregistreuses digitales a ete abandonne,
trop deboussolant pour les vendeuses :-/

--
VPSoft
Le #19078911
Salut,

Le délai est en centièmes (cf. doc)

Procedure Repos(CSeconde)
DelaiEnCentiemes est entier = CSeconde * 100
multitache(- DelaiEnCentiemes )


Victor


"Regis" 49dc483e$0$17761$
Romain PETIT a écrit :
Multitache(-xxx) ne convient pas ?



Comment modeliserais tu l'attente ? Du moins en fonction de ce que j'ai
saisi comme algo...

Merci Romain,

Pour Chrono(), je parlais tout Windev confondu, c'est a dire avec la
fonction ou la procedure la plus simple.

Amicalement,

Régis.

--


patrice
Le #19079181
sans vouloir entrer dans le pourquoi du comment de l'erreur

je n'ai jamais vu une seule imprimante série sans controle de flux
Souvent c'est des dip switch à l'intérieur, pour autoriser le xon/xoff ou le
controle hard (cts,dtr)
Donc pour ne pas avoir a adapter le soft en fonction de la puissance du pc,
on laisse l'imprimante dire d'elle meme quand son buffer est plein.
Une fois l'imprimante configurée, tu configure ton port com de la meme
maniere et ce problème devrait être résolu.
Regis
Le #19083201
VPSoft a écrit :
Le délai est en centièmes (cf. doc)

Procedure Repos(CSeconde)
DelaiEnCentiemes est entier = CSeconde * 100
multitache(- DelaiEnCentiemes )



Merci Victor, j'ai deja implanté le greffon MultiTache(), on va voir si
il ne creait pas d'erreur ;-)

--
Regis
Le #19083311
patrice a écrit :
sans vouloir entrer dans le pourquoi du comment de l'erreur



Non, mais c'est ton droit de participant au forum Windev, tu t'y
interesses, bin, ca me fait plaisir, cela ne peut que m'aider...

je n'ai jamais vu une seule imprimante série sans controle de flux
Souvent c'est des dip switch à l'intérieur, pour autoriser le xon/xoff ou le
controle hard (cts,dtr)



EN fait c'est une Epson TM-U300A et j'ai bien configuré les dip-switchs
sur ce que tu sembles specifier...

Donc pour ne pas avoir a adapter le soft en fonction de la puissance du pc,
on laisse l'imprimante dire d'elle meme quand son buffer est plein.



Malheureusement ce n'est pas le cas, il faut dire aussi que je passe par
l'imprimante generique que propose Windows, ceci explique, peut etre, cela !

Une fois l'imprimante configurée, tu configure ton port com de la meme
maniere et ce problème devrait être résolu.



Je vais reviser les configurations, et de l'imprimante, et de Windows,
ca se trouve, j'ai fait une erreur de parametrage, de toutes les
manieres, le temps de pause pour l'impressionk ne gene en rien la
vendeuse ou le vendeur et meme, a minuit ou trois heures du matin quand
ils ferment le dernier magasin. De plus, j'ai apporte quelques nouvelles
modifications aux PC-caisses-enregistreuses : rendu de monnaie (pour les
jeunes vendeuses qui ne savent pas compter sans une calculatrice - ca
arrive de plus en plus souvent, or, ils n'etaient venu a l'esprit des
vendeurs/vendeuses habituels d'avoir un rendu monnaie = trop long et
perturbateur pour l'encaissement) et sauvegarde du Z sur une clé USB, ca
c'est tres facile, suffit de demander la liste des supports amovibles et
d'offrir au manipulateur la meilleure solution, en evitant de faire la
sauvegarde sur le lecteur CD ;-) Mais Windev a tout pour tester et un
assistant qui permet de generer le selecteur de lecteurs, donc pas
reellement de probleme quant a la modification sous Windev.

--
Publicité
Poster une réponse
Anonyme