Bonjour,
Je cherche à récupérer le poids net d'une balance via une application Delphi utilisant une Socket.
J'ai donc écris mon code :
Je sais ce que je dois envoyer à ma balance en hexa grâce à sa doc : SOH ENQ 0 3 L CR LF
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 procedure TFrm_Poids.Button1Click(Sender: TObject); var sMessage : char; begin sMessage := Char(0x1) ; // Connexion au serveur socket (imprimante) CSockPoids.Address := '192.168.xx.xx'; CSockPoids.Port := 11001; CSockPoids.Open; Try // Transmission de texte au serveur CSockPoids.Socket.SendText( ); Memo1.Lines.Add('Message envoyé'); // voir SendBuf pour mes tests suivants //CSockPoids.Socket.SendBuf() except on E : ESocketError do ShowMessage('Anomalie envoi du message vers imprimante'); end; end;
SOH : Début de l'en-tête (0x1)
ENQ = Demande (0x5)
0 3 = Poids net (0x30 0x33)
L = Lecture seule (0x4c)
CR = Carriage return (0x0D)
LF = Line Feed (0x0A)
Mais je ne sais pas comment l'écrire en Delphi ... Que vaut il mieux utiliser ?
J'ai tenté ça :
Cela ne me fait pas d'erreur ça compile, maintenant il faut que je récupère la réponse de l'imprimante, je ne sais pas encore comment faire ? Surtout que l'on m'a prévenu que la balance ne renvoyait pas de marqueur de fin ... j'ai l'habitude de coder en WD qui permet de pallier à ça grâce aux fonctions SocketChangeModeTransmission(sNomSocket, SocketMarqueurFinBuffer) mais avec Delphi je ne sais pas comment le gérer, je continue à regarder
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 procedure TFrm_Poids.Button1Click(Sender: TObject); var sMessage : char; begin // Connexion au serveur socket (imprimante) CSockPoids.Address := '192.168.xx.xx'; CSockPoids.Port := 11001; CSockPoids.Open; Try // Transmission de texte au serveur if CSockPoids.Socket.SendText(Chr(01)+Chr(05)+Chr(48)+Chr(51)+Chr(76)+Chr(13)+Chr(10))>0 then Memo1.Lines.Add('Message envoyé'); // voir SendBuf pour mes tests suivants sMessage := //CSockPoids.Socket.SendBuf() except on E : ESocketError do ShowMessage('Anomalie envoi du message vers imprimante'); end; end;
Merci d'avance
Partager