Port com sur delphi 6

[Résolu]
Signaler
Messages postés
33
Date d'inscription
dimanche 23 mai 2004
Statut
Membre
Dernière intervention
30 octobre 2007
-
Messages postés
33
Date d'inscription
dimanche 23 mai 2004
Statut
Membre
Dernière intervention
30 octobre 2007
-
bonjour,
j'ai un code en QuickBasic et je voudrais le faire marcher en delphi6, si quelqu'un connait le code se raprochant le plus se serai cool
surtout sur la commande OPEN Merci davance
CLS
DIM inbuf(800)
DIM outbuf(3)

OPEN "com1,19200,n,8,1,bin,cs,ds" FOR RANDOM AS #1


outbuf(0) = 3

outbuf(1) = 1

outbuf(2) = 9

outbuf(3) = outbuf(0) XOR outbuf(1) XOR outbuf(2)

PRINT #1, CHR$(outbuf(0)) + CHR$(
outbuf(1)) + CHR$(
outbuf(2)) + CHR$(
outbuf(3))

END

7 réponses

Messages postés
1606
Date d'inscription
samedi 10 juillet 2004
Statut
Membre
Dernière intervention
25 juillet 2014
12
salut le plus simple est d'utiliser un composant comme TComport ou une dll comme RSCOM.dll


pour la dll tu déclares:
function OPENCOM(OpenString:PChar):Integer; stdcall; external 'RSCOM.DLL';


ensuite tu n'as plus qu'à l'utiliser:
OpenCom('COM1: baud=19200 parity=N data=8 stop=1');


@+

jlen
Messages postés
33
Date d'inscription
dimanche 23 mai 2004
Statut
Membre
Dernière intervention
30 octobre 2007

Merci pour ta réponse!
mais je sais pas comment faire pour la commande : CHR$

PRINT #1, CHR$(outbuf(0)) + CHR$( outbuf(1)) + CHR$( outbuf(2)) + CHR$( outbuf(3))

quelqu'un à une idée?
merci davance
Messages postés
1606
Date d'inscription
samedi 10 juillet 2004
Statut
Membre
Dernière intervention
25 juillet 2014
12
en VB chr$ renvoie une chaine?

dim outbuf(3)---> outbuf:array[0..3]of integer;

 alors chaine:=inttostr(outbuf[0])+inttostr(outbuf[1])+inttostr(outbuf[2])+inttostr(outbuf[3]);


@+

jlen
Messages postés
33
Date d'inscription
dimanche 23 mai 2004
Statut
Membre
Dernière intervention
30 octobre 2007

merci ! jai essai mais le sousi ses quant je mes la variable 'chaine' dans TXD(chaine) il me dit word et string son incompatible,
quelqu'un aurai une idée?
Messages postés
1606
Date d'inscription
samedi 10 juillet 2004
Statut
Membre
Dernière intervention
25 juillet 2014
12
tu as 2 solutions soit faire TXD(outbuf[x]) et répéter l'opération ou utiliser :
procedure SENDSTRING (Buffer: PChar);
stdcall; external 'RSCOM.DLL';


vas voir ICI


@+

jlen
Messages postés
33
Date d'inscription
dimanche 23 mai 2004
Statut
Membre
Dernière intervention
30 octobre 2007

merci encors a toi jlen,
maleresement sa marche tjr pas! malgré tes conseil, je narrive pas a transmettre le bon code a mon avie a la platine
jai bien comprie comment le faire mais je narrive pas encors a trouvé comme le faire marche!!
jai la platine relait de chez Conrad LeC http://www.conrad.fr/Composants/Automatisme/Automates-programmables/Carte-de-relais-pour-commutation.html
dapre le livre il me disse que je doit transmettre une serie de 4byte

Byte 0            Byte 1                        byte2       Byte3 
Commande -  adresse de la paqute - Donner - total de controle (XOR)
3                    1                                 1            3

le code QuickBasic :

CLS
DIM inbuf(800)
DIM outbuf(3)

OPEN "com1,19200,n,8,1,bin,cs,ds" FOR RANDOM AS #1

outbuf(0) = 3
outbuf(1) = 1
outbuf(2) = 1
outbuf(3) = outbuf(0) XOR outbuf(1) XOR outbuf(2)

PRINT #1, CHR$(outbuf(0)) + CHR$( outbuf(1)) + CHR$( outbuf(2)) + CHR$( outbuf(3))

END

donc voila! si tu veut plus dinfo ésite pas! jespere que tu y vera plus claire que moi
merci davance
Messages postés
33
Date d'inscription
dimanche 23 mai 2004
Statut
Membre
Dernière intervention
30 octobre 2007

re jai trouvé se que signifié CHR ( http://www.vbfrance.com/infomsg.aspx?ID=806849 ) il stranforme le carraterre en ASCII donc je voudrai juste savoir comment je pourai faire sa en delphi pour stransmettre au com1 le total en ascii??