Pas d'inquiétude, avec PBAdonf, c'est dans la poche ! ^^

Le forum (ô combien francophone) des utilisateurs de Powerbuilder.

Recherche rapide

Annonce

Certaines rubriques, dont des cours, sont uniquement visibles par les membres du forum ^^.
Dans la rubrique Liens & Références, vous avez accès à un sommaire de téléchargement, profitez-en !
Il existe maintenant un nouveau TOPIC "Votre CV en Ligne" accessible uniquement par demande.

#1 13-08-2007 14:32:57

Ryo  
Membre Geek
Lieu: Rochejean
Date d'inscription: 01-11-2006
Messages: 22
Pépites: 80
Banque: 0

[RESOLU] Port 4b8. Bricolages et tiroir caisse ...

Bonjour,

Pour piloter l'ouverture et la fermeture d'un tiroir caisse, je cherche à envoyer une info sur le port 4b8 de la machine ... C'est un peu du chinois pour moi.
Je sais ouvrir un port com et communiquer avec, mais là, je ne crois pas pouvoir procéder de même ...
Quelqu'un s'y connait en communication avec les ports (type 80, 4900 et autres ??? et surtout 4b8 ???)

Il existe une astuce pour piloter le tiroir caisse depuis l'imprimante point de vente associée, mais à chaque fois que je veux ouvrir le tiroir, l'imprimante sort du papier pour rien ... et ça ne me convient pas.

Alors j'utilise le port dédié sur le terminal point de vente, et là, c'est le grand vide intersidéral au niveau de mes connaissances.

Merci d'avance aux bonnes âmes de ce forum !

Dernière modification par Ryo (29-08-2007 14:17:17)

Hors ligne

 

#2 13-08-2007 18:04:43

erasorz  
Admin
Lieu: Babylone
Date d'inscription: 23-11-2006
Messages: 5121
Pépites: 97,197
Banque: 2,147,483,647

Re: [RESOLU] Port 4b8. Bricolages et tiroir caisse ...

salut, tu es sûr de ton port 4b8 ?
N'y a-t-il pas confusion entre les ports physiques (com1,...) et les ports TCP/IP (80, 4900...) ?

Par ailleurs, pourrais-tu donner des précisions sur l'envt. technique ? (applications existantes communiquant avec le tiroir caisse... )


N'envoyez jamais un humain faire le travail d'un programme.

Hors ligne

 

#3 14-08-2007 10:16:48

Ryo  
Membre Geek
Lieu: Rochejean
Date d'inscription: 01-11-2006
Messages: 22
Pépites: 80
Banque: 0

Re: [RESOLU] Port 4b8. Bricolages et tiroir caisse ...

En ce qui concerne le n° de port, c'est : 4b8h.

Pour le type de port, et bien en fait, je ne sais pas trop. Je pencherais plus pour un port TCP/IP.

Mais même si techniquement ça a une importance capitale, ça ne change rien pour mon problème : je ne sais pas non plus comment envoyer une valeur sur un port TCP / IP avec PB.

Je bosse aussi avec Windev, et il me semble que c'est un peu plus facile : on utilise des sockets, on connecte et on balance les données. Mais je refuse de migrer cette grosse appli sous Windev : trop gros et je perdrais tous les avantages des DW : ça n'existe pas encore en Windev, même s'ils font des efforts et des essais.

Pour l'instant, la machine est un TPV équipé d'une multitude de ports de communication (6 ports COM, un port dédié tiroir caisse, une alim imprimante TPV intégrée), d'USB, d'un afficheur client, d'un lecteur de carte CF et d'un écran tactile. Tout tourne sous XP Pro et ça roule plutôt correctement.
Le pilotage du tiroir caisse est possible par l'imprimante (il faut alors brancher le tiroir sur le port dédié de l'imprimante) et balancer un code dans un PrintJob. ça je sais faire, mais ça sort un bout de rouleau papier à chaque fois ... Donc je cherche à utiliser le port dédié sur le TPV directement.
Pour l'instant, le fournisseur livre une appli qui sait ouvrir le tiroir et le fermer (en fait, le loquet d'ouverture reste ouvert, pour le ramener en position d'origine, il faut utiliser une autre valeur). Cette appli doit utiliser une DLL ou je ne sais quoi, mais je n'arrive pas à connaitre la fonction appelée ... Peut-être devrais-je utiliser un outil pour explorer les DLL (ça existe ?).
Le fournisseur explique aussi qu'il suffit d'utiliser le port 4b8h (et non 4b8) ...

"Le cash draw peut être connecté sur l'imprimante ou bien sur l'Odyssé.
Le cash draw est géré par le pilote (commande d'ouverture incluse)
ou bien par une commande en ESC/POS exemple: esc p 0 100 100  ou 27 112 0 100 100 (interface serie ou parallele)
ou bien directement sur l'Odyssé, adresse 4B8h "

Bon, en fait je suis un peu perdu.

Vous savez tout ...

Hors ligne

 

#4 14-08-2007 10:27:58

pick ouic  
La bourse ou la vie ^^
Award: gearotter
Lieu: Massy-Verrières
Date d'inscription: 29-05-2006
Messages: 4658
Pépites: 942
Banque: 2,147,483,647
Site web

Re: [RESOLU] Port 4b8. Bricolages et tiroir caisse ...

utilises cela pour voir les fonctions exsitantes de ta dll...

http://pbadonf.fr/forum/viewtopic.php?id=106


Connaitre son ignorance est une grande part de la connaissance.
http://animegifs.free.fr/anime/mazinger/mazinger.gif

Hors ligne

 

#5 14-08-2007 10:35:58

Ryo  
Membre Geek
Lieu: Rochejean
Date d'inscription: 01-11-2006
Messages: 22
Pépites: 80
Banque: 0

Re: [RESOLU] Port 4b8. Bricolages et tiroir caisse ...

Sinon, j'ai trouvé un bout de script VB ...  j'essaie de transcrire tout ça et je vous tiens au courant !

Pour info, les scripts VB ressemblent à ça :

La déclaration Vb (pour les fonctions de la DLL WinIO.dll) est du type :

Code: vb

Declare Function GetPortVal Lib "WinIo.dll" (ByVal PortAddr As Integer, ByRef PortVal As Long, ByVal bSize As Byte) As Boolean
Declare Function SetPortVal Lib "WinIo.dll" (ByVal PortAddr As Integer, ByVal PortVal As Long, ByVal bSize As Byte)


Ensuite, on doit utiliser des subroutines du style :

Code: vb

Private Sub Command1_Click()
  Dim Result As Boolean
  
  Result = SetPortVal(&H4B8, &H1, 1)
  
  If (Result = False) Then
    MsgBox "Whoops ! There is a problem with SetPortByte.", vbOKOnly + vbCritical, "B82 CashDrawer"
    Unload Me
  End If
  Call CheckCDStatus
End Sub

Private Sub Command2_Click()
 Dim Result As Boolean
  
  Result = SetPortVal(&H4B8, &H0, 1)
  
  If (Result = False) Then
    MsgBox "Whoops ! There is a problem with SetPortByte.", vbOKOnly + vbCritical, "B82 CashDrawer"
    Unload Me
  End If
  Call CheckCDStatus
End Sub

Private Sub Command3_Click()
  Call CheckCDStatus
End Sub

Private Sub Form_Load()
  If InitializeWinIo = False Then
    MsgBox "Whoops ! There is a problem with InitializeWinIo.", vbOKOnly + vbCritical, "VBDumpPort32"
    Unload Me
  Else
    Call CheckCDStatus
  End If
End Sub

Private Sub CheckCDStatus()
  Dim Result As Boolean
  Dim PortVal As Long
  
  Result = GetPortVal(&H4B8, PortVal, 1)
    
  If (Result = False) Then
    MsgBox "Whoops ! There is a problem with GetPortByte.", vbOKOnly + vbCritical, "VBDumpPort32"
    Unload Me
  Else
    If PortVal And &H10 Then
       Text1.Text = "Cash Drawer is closed"
    Else
       Text1.Text = "Cash Drawer is opened or not exist"
       
    End If
    'TxtPortByte = Hex$(PortVal And &HFF)
  End If
End Sub

Hors ligne

 

#6 14-08-2007 12:03:38

Chrnico  
N2I Power
Award: bf
Lieu: Vanves
Date d'inscription: 05-06-2007
Messages: 1206
Pépites: 12,884,901,943
Banque: 9,223,372,036,854,776,000
Site web

Re: [RESOLU] Port 4b8. Bricolages et tiroir caisse ...

Ryo a écrit:

En ce qui concerne le n° de port, c'est : 4b8h.

Pour le type de port, et bien en fait, je ne sais pas trop. Je pencherais plus pour un port TCP/IP.

Mais même si techniquement ça a une importance capitale, ça ne change rien pour mon problème : je ne sais pas non plus comment envoyer une valeur sur un port TCP / IP avec PB.

Je bosse aussi avec Windev, et il me semble que c'est un peu plus facile : on utilise des sockets, on connecte et on balance les données. Mais je refuse de migrer cette grosse appli sous Windev : trop gros et je perdrais tous les avantages des DW : ça n'existe pas encore en Windev, même s'ils font des efforts et des essais.

Pour l'instant, la machine est un TPV équipé d'une multitude de ports de communication (6 ports COM, un port dédié tiroir caisse, une alim imprimante TPV intégrée), d'USB, d'un afficheur client, d'un lecteur de carte CF et d'un écran tactile. Tout tourne sous XP Pro et ça roule plutôt correctement.
Le pilotage du tiroir caisse est possible par l'imprimante (il faut alors brancher le tiroir sur le port dédié de l'imprimante) et balancer un code dans un PrintJob. ça je sais faire, mais ça sort un bout de rouleau papier à chaque fois ... Donc je cherche à utiliser le port dédié sur le TPV directement.
Pour l'instant, le fournisseur livre une appli qui sait ouvrir le tiroir et le fermer (en fait, le loquet d'ouverture reste ouvert, pour le ramener en position d'origine, il faut utiliser une autre valeur). Cette appli doit utiliser une DLL ou je ne sais quoi, mais je n'arrive pas à connaitre la fonction appelée ... Peut-être devrais-je utiliser un outil pour explorer les DLL (ça existe ?).
Le fournisseur explique aussi qu'il suffit d'utiliser le port 4b8h (et non 4b8) ...

"Le cash draw peut être connecté sur l'imprimante ou bien sur l'Odyssé.
Le cash draw est géré par le pilote (commande d'ouverture incluse)
ou bien par une commande en ESC/POS exemple: esc p 0 100 100  ou 27 112 0 100 100 (interface serie ou parallele)
ou bien directement sur l'Odyssé, adresse 4B8h "

Bon, en fait je suis un peu perdu.

Vous savez tout ...

Pour moi ton port 4b8h étant en hexa, il serait peut-être interessant d'essayer de communiquer sur le port socket 1208 et donc de bien vérifier qu'il n'est pas bloqué par un firewall quelconque...


Tu dois donc tu peux (Kant)

Tu peux donc tu dois (N2i)
www.n2i.fr

Hors ligne

 

#7 14-08-2007 12:13:15

Ryo  
Membre Geek
Lieu: Rochejean
Date d'inscription: 01-11-2006
Messages: 22
Pépites: 80
Banque: 0

Re: [RESOLU] Port 4b8. Bricolages et tiroir caisse ...

Merci pour toutes ces informations.
La communication avec un port socket, c'est dans la doc de PB ? Je jette un oeil !

Hors ligne

 

#8 14-08-2007 12:22:28

Chrnico  
N2I Power
Award: bf
Lieu: Vanves
Date d'inscription: 05-06-2007
Messages: 1206
Pépites: 12,884,901,943
Banque: 9,223,372,036,854,776,000
Site web

Re: [RESOLU] Port 4b8. Bricolages et tiroir caisse ...

Ryo a écrit:

Merci pour toutes ces informations.
La communication avec un port socket, c'est dans la doc de PB ? Je jette un oeil !

Malheureusement non, tu ne pourras pas communiquer sur ce socket avec autre chose que les méthodes ORB servant à parler avec un serveur applicatif type EAS pour ne pas le nommer. Il faut donc passer par les API de Window pour y arriver...


Tu dois donc tu peux (Kant)

Tu peux donc tu dois (N2i)
www.n2i.fr

Hors ligne

 

#9 14-08-2007 12:24:08

Ryo  
Membre Geek
Lieu: Rochejean
Date d'inscription: 01-11-2006
Messages: 22
Pépites: 80
Banque: 0

Re: [RESOLU] Port 4b8. Bricolages et tiroir caisse ...

Ok, je vais donc faire un essai avec ce script vb. Avec un peu de bol, ça va coller tout seul, et cette nuit, le tiroir caisse fonctionnera comme il faut.

Merci !!

Hors ligne

 

#10 14-08-2007 12:25:25

Ryo  
Membre Geek
Lieu: Rochejean
Date d'inscription: 01-11-2006
Messages: 22
Pépites: 80
Banque: 0

Re: [RESOLU] Port 4b8. Bricolages et tiroir caisse ...

Petit question hors sujet : je suis tout neuf sur ce forum et je me vois attribuer des pépites ... c'est quoi les pépites et ça sert à quoi ? J'ai beau fouiller sur le forum je ne trouve pas d'explication ... Une lumière cher Pick Ouic ?

Hors ligne

 

#11 14-08-2007 12:28:31

Chrnico  
N2I Power
Award: bf
Lieu: Vanves
Date d'inscription: 05-06-2007
Messages: 1206
Pépites: 12,884,901,943
Banque: 9,223,372,036,854,776,000
Site web

Re: [RESOLU] Port 4b8. Bricolages et tiroir caisse ...

http://msdn2.microsoft.com/fr-fr/library/034sezwy(VS.80).aspx

Si ça peut t'aider...


Tu dois donc tu peux (Kant)

Tu peux donc tu dois (N2i)
www.n2i.fr

Hors ligne

 

#12 14-08-2007 12:35:16

Ryo  
Membre Geek
Lieu: Rochejean
Date d'inscription: 01-11-2006
Messages: 22
Pépites: 80
Banque: 0

Re: [RESOLU] Port 4b8. Bricolages et tiroir caisse ...

Merci. J'essaierai les socket si les appels aux DLL ne donnent rien.
Plus de news demain.
Encore merci Chrnico de N2I

Hors ligne

 

#13 15-08-2007 08:09:40

Ryo  
Membre Geek
Lieu: Rochejean
Date d'inscription: 01-11-2006
Messages: 22
Pépites: 80
Banque: 0

Re: [RESOLU] Port 4b8. Bricolages et tiroir caisse ...

Rien a faire, quand j'appelle la fonction SetPortval, j'ai une "Bad Runtime Reference"

Pourtoant, je déclare la fonction normalement, et je l'appelle par :

lb_result = SetPortVal(1208, 1, 1)

Peut-être est-ce la déclaration du "BYTE" que j'ai mal converti ... ?

Hors ligne

 

#14 15-08-2007 08:19:32

Ryo  
Membre Geek
Lieu: Rochejean
Date d'inscription: 01-11-2006
Messages: 22
Pépites: 80
Banque: 0

Re: [RESOLU] Port 4b8. Bricolages et tiroir caisse ...

Non, même pas, les types conviennent ...

Hors ligne

 

#15 15-08-2007 09:05:55

Ryo  
Membre Geek
Lieu: Rochejean
Date d'inscription: 01-11-2006
Messages: 22
Pépites: 80
Banque: 0

Re: [RESOLU] Port 4b8. Bricolages et tiroir caisse ...

Trouvé !
J'utilise une autre DLL et hop, ça marche.
Reste à insérer un délai entre l'ouverture et la fermeture, histoire de laisser le temps au tiroir de s'ouvrir physiquement.
Merci !

Hors ligne

 

#16 15-08-2007 09:24:04

Chrnico  
N2I Power
Award: bf
Lieu: Vanves
Date d'inscription: 05-06-2007
Messages: 1206
Pépites: 12,884,901,943
Banque: 9,223,372,036,854,776,000
Site web

Re: [RESOLU] Port 4b8. Bricolages et tiroir caisse ...

Ryo a écrit:

Petit question hors sujet : je suis tout neuf sur ce forum et je me vois attribuer des pépites ... c'est quoi les pépites et ça sert à quoi ? J'ai beau fouiller sur le forum je ne trouve pas d'explication ... Une lumière cher Pick Ouic ?

A chaque post de message tu reçois 3 pépites.
Généralment il est également de bon ton de donner quelques pépites à ceux qui t'aident (menu donation).
Ainsi, le nombre de pépites permet de savoir si un membre est actif ou non sur le forum.
De plus il sert à jouer à la loterie (menu loterie), histoire d'avoir plein de pépites. Bon là j'avoue qu'il n'y a pas grand intérêt. Tu peux également placer tes pépites en banques pour obtenir des intérêts (menu loterie)... Voilà, en gros c'est plus pour le fun


Tu dois donc tu peux (Kant)

Tu peux donc tu dois (N2i)
www.n2i.fr

Hors ligne

 

#17 15-08-2007 20:59:05

Ryo  
Membre Geek
Lieu: Rochejean
Date d'inscription: 01-11-2006
Messages: 22
Pépites: 80
Banque: 0

Re: [RESOLU] Port 4b8. Bricolages et tiroir caisse ...

C'est du capitalisme de pépites
Encore un truc de chef d'entreprise !!! (n'est-ce pas Chrnico ?)
En tout cas merci de votre aide.

Hors ligne

 

#18 29-08-2007 14:16:41

Ryo  
Membre Geek
Lieu: Rochejean
Date d'inscription: 01-11-2006
Messages: 22
Pépites: 80
Banque: 0

Re: [RESOLU] Port 4b8. Bricolages et tiroir caisse ...

Bon, en gros, la solution est toute simple, il y a une DLL qui contient une oaire de fonctions pour communiquer directement sur le port concerné. Il suffit d'envoyer la commande d'ouverture, puis après quelques dixièmes de secondes, la commande de fermeture, pour laisser le temps au ressort du tiroir d'éjecter ce dernier. Sinon, le tiroir n'a même pas le temps de sortir.

C'est un peu la galère de régler ce genre de délai ... sous d'autres langages, on a tout un armada de solutions pour faire patienter le programme un certain temps, mais PB, c'est un peu l aplaie pour ça.
Il y a du mieux de ce côté dans PB 10.5 ou 11 ? J'ai le 10.5 mais je n'ai pas encore migré cette grosse appli.

Hors ligne

 

#19 29-08-2007 14:18:29

pick ouic  
La bourse ou la vie ^^
Award: gearotter
Lieu: Massy-Verrières
Date d'inscription: 29-05-2006
Messages: 4658
Pépites: 942
Banque: 2,147,483,647
Site web

Re: [RESOLU] Port 4b8. Bricolages et tiroir caisse ...

merci de tes nouvelles, ryo saeba


Connaitre son ignorance est une grande part de la connaissance.
http://animegifs.free.fr/anime/mazinger/mazinger.gif

Hors ligne

 

#20 29-08-2007 14:36:08

wazou1812  
Modératrice
Award: bf
Date d'inscription: 24-05-2006
Messages: 610
Pépites: 2,097
Banque: 3,536,631,712,504

Re: [RESOLU] Port 4b8. Bricolages et tiroir caisse ...

Ryo a écrit:

... sous d'autres langages, on a tout un armada de solutions pour faire patienter le programme un certain temps, mais PB, c'est un peu l aplaie pour ça.
Il y a du mieux de ce côté dans PB 10.5 ou 11 ? J'ai le 10.5 mais je n'ai pas encore migré cette grosse appli.

Il y a la commande SLEEP(nbre de seconde)

Hors ligne

 

#21 29-08-2007 14:43:06

Ryo  
Membre Geek
Lieu: Rochejean
Date d'inscription: 01-11-2006
Messages: 22
Pépites: 80
Banque: 0

Re: [RESOLU] Port 4b8. Bricolages et tiroir caisse ...

ça marche moyen quand on veut juste des centièmes ou dixièmes de secondes, mais c'est vrai qu'il y a ça.

Hors ligne

 

#22 29-08-2007 14:44:33

Ryo  
Membre Geek
Lieu: Rochejean
Date d'inscription: 01-11-2006
Messages: 22
Pépites: 80
Banque: 0

Re: [RESOLU] Port 4b8. Bricolages et tiroir caisse ...

"merci de tes nouvelles, ryo saeba "
J'ai tous les mangas de la série en poches à la maison ... Manque juste le marteau de 100 T et un gros flingue ...
On s'égare, c'est hors sujet, désolé !

Hors ligne

 

#23 26-07-2008 21:21:29

Ryo  
Membre Geek
Lieu: Rochejean
Date d'inscription: 01-11-2006
Messages: 22
Pépites: 80
Banque: 0

Re: [RESOLU] Port 4b8. Bricolages et tiroir caisse ...

Bon, mauvaise nouvelle :

La migration de mon application en PB 10.5 fait planter mon application au niveau de l'afficheur client ... je suppose que la gestion des ports COm a subi une petite transformation dans les DLL de PB ...

Quelqu'un aurit-il une info pour m'éviter de me creuser la cervelle une seconde fois ?

Merci.

Hors ligne

 

#24 27-07-2008 07:38:16

pick ouic  
La bourse ou la vie ^^
Award: gearotter
Lieu: Massy-Verrières
Date d'inscription: 29-05-2006
Messages: 4658
Pépites: 942
Banque: 2,147,483,647
Site web

Re: [RESOLU] Port 4b8. Bricolages et tiroir caisse ...

salut, tu peux nous montrer des exemples de declarations d'appels ?
est ce que cela utilise aussi des blobs ?


Connaitre son ignorance est une grande part de la connaissance.
http://animegifs.free.fr/anime/mazinger/mazinger.gif

Hors ligne

 

#25 27-07-2008 08:19:50

erasorz  
Admin
Lieu: Babylone
Date d'inscription: 23-11-2006
Messages: 5121
Pépites: 97,197
Banque: 2,147,483,647

Re: [RESOLU] Port 4b8. Bricolages et tiroir caisse ...

Ryo a écrit:

ça marche moyen quand on veut juste des centièmes ou dixièmes de secondes, mais c'est vrai qu'il y a ça.

pour ça tu peux utiliser une API (en millisecondes) :

Code: pb

SUBROUTINE Sleep(ulong milli) LIBRARY "Kernel32.dll"


à renommer pour ne pas entrer en conflit avec la fonction sleep de PB


N'envoyez jamais un humain faire le travail d'un programme.

Hors ligne

 

Pied de page des forums

Propulsé par FluxBB 1.2.22