Communication avec tcomport

Signaler
Messages postés
39
Date d'inscription
vendredi 14 octobre 2005
Statut
Membre
Dernière intervention
27 novembre 2009
-
Messages postés
1606
Date d'inscription
samedi 10 juillet 2004
Statut
Membre
Dernière intervention
25 juillet 2014
-
salut Mr
merci pour ce forum qui nous aide bcp dans nos projet

j'aime envoyer un etat 0 ou 1 par une liason serie avec Tcomport
qu est ce que j ecrit comme code dans le bouton d envoye sur delphi de meme pour recevoir un etat 0 ou 1
comment je connait que cet etat sera sur le port 1 ou 2 ...

est ce qu il ya un exemple ou des documents qui me facilite l'utilisation de ce composant ? j ai trouve un mais avec un exemple de chaine de caractere j aime avec des etat 0 ou 1

merci

5 réponses

Messages postés
1606
Date d'inscription
samedi 10 juillet 2004
Statut
Membre
Dernière intervention
25 juillet 2014
12
salut

le port COM2 étant réservé à la souris il est inutilisable. En régle
générale sur les PC seul le port COM1 est accessible (sauf à rajouter
une carte d'extension ) il te faut simplement raccorder ton automate
sur le port COM1 ; ne connaissant pas le S200 de siemens vérifie qu'il
communique bien sous RS232 sinon il te faudra un convertisseur de
mode.

il me semble aussi que certains automate de cette serie communiquent
par ethernet et que dans ce cas on peut choisir le numero de port serie
celui ci étant vu comme un port virtuel par le PC.

qu'entends tu par un etat 0 et un état 1?

je suppose qu'il du caractere #0 et du carctere #1. Si c'est bien le
cas les routines données dans le tuto de Nono40 fonctionnent
parfaitement.

pour communiquer il faut

placer un composant Tcomport sur ta form

dans les proprietes

choisir le port sur lequel est connecté ton automate (le COM1 si tu travailles en direct)

choisir la vitesse de communication (baudrate) elle doit être égale à celle de l'automate (voir documentation de celui-ci)

en principe les proprietes databits;parity,stopbits,flowcontrol peuvent
être utilisées par défaut mais à vérifiées avec la doc de l'automate.

pour un test tu mets la propriété connected à true mais en régle
générale il est préférable de la laisser à false et à
nela connecter que quand celà est nécessaire.



pour envoyer un caractere #0:



procedure TForm1.Button1Click(Sender: TObject);

begin



if not Comport1.Connected then Comport1.Open;//on établit la communication

Comport1.ClearBuffer(true,true);//on vide le buffer de reste éventuel

Comport1.WriteStr(#0);// envoi un caractere 0

end;

pour recevoir tu peux utiliser l'évènement onRXchar

procedure TForm1.Comport1RxChar(Sender: TObject; Count: Integer);

var chaine:string;

begin

comport1.ReadStr(chaine,count);

case chaine[0] of //ici tu mets ton code de traitement

#0: ShowMessage('caractere #0 reçu');

#1: ShowMessage('caractere #1 reçu');

end;



end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);

begin

if Comport1.Connected then Comport1.Close;//toujours s'assurer que la connection est fermée à la sortie

end;

@+

jlen
Messages postés
39
Date d'inscription
vendredi 14 octobre 2005
Statut
Membre
Dernière intervention
27 novembre 2009

slt merci pour cette explication

je veux dire d'une etat c'est que j ai une sortie d'une automate qui envoie soit 0 ou 1 qui indique que ma machine est en marche ou non. Selon etat je vais activer une photo et desactiver l autre selon 0 ou 1. Vous pensez que ce programme accepte ces valeurs comme caractere ou booleeen ou autre
merci
Messages postés
1606
Date d'inscription
samedi 10 juillet 2004
Statut
Membre
Dernière intervention
25 juillet 2014
12
par sortie automate s'agit il d'une sortie tout our rien en 0/24V?
Messages postés
39
Date d'inscription
vendredi 14 octobre 2005
Statut
Membre
Dernière intervention
27 novembre 2009

slt
ouii tout ou rien
Messages postés
1606
Date d'inscription
samedi 10 juillet 2004
Statut
Membre
Dernière intervention
25 juillet 2014
12
dans ce cas tu ne peux pas lire directement cette sortie avec la
liaison serie; qui a besoin d'un protocole de communication bien défini.

tu as besoin d'une entrée sur le PC qui réagisse aux 2 états, tu as plusieurs solutions pour cela:

- utiliser le port parallele (solution la plus simple)

- utiliser les lignes de controle du port serie ( solution un peu plus compliqué mais qui peu réagir à des évènements)

- utiliser une carte d'entrées/sorties (solution la plus sure mais demande un investissement en matériel)

ATTENTION DANS TOUS LES CAS IL FAUT ADAPTER LES NIVEAUX DE TENSION SOUS PEINE DE DESTRUCTION DU PC

en effet les entrees PC ne supporte pas plus de 5V pour le port parralele et 15V pour le port serie.

la aussi plusieurs solutions soit passer par un optocoupleur, soit
mettre un pont diviseur, soit rappeler l'entrée au plus 5V en mettre
une diode de protection.

pour lire le port parallele vas voir la source de ryryl:

PORT PARALLÈLE : LIRE/ÉCRIRE DANS LES REGISTRES DATA/CONTROL/STATUS DU PORT //

elle utilise une petite ddl tres simple à utiliser (« INPOUT32.DLL »,)

pour lire sur leport serie il vaut mieux utiliser les évèments onDSRchange; onCTSchange ou onRing.

si tu as besoin de plus de renseigneiment n'hesite pas

@+

jlen