InfoGeo
Messages postés87Date d'inscriptionjeudi 2 février 2012StatutMembreDernière intervention17 avril 2013
-
21 avril 2011 à 14:53
InfoGeo
Messages postés87Date d'inscriptionjeudi 2 février 2012StatutMembreDernière intervention17 avril 2013
-
22 avril 2011 à 11:54
Bonjour,
Je suis actuellement en stage et pour ce stage je dois réaliser un programme qui me permet de controler la température d une salle blanche, pour cela j ai 5 capteurs de type T3411 et un convertisseur RS485/232 relié à un ordi.
Pour l instant je souhaiterai juste réussir a afficher la température qu affiche le capteur sur la forme.
Mais je ne recois rien en MsComm1.input
Voila ma classe T3411
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Public Comm As MSComm
Public CommPort As Integer
Public Address As Integer
Private Const Timeout As Double = 2#
Option Explicit
'Fonction permettant d'initialiser les capteurs
'
'
Public Function Init() As Boolean
On Error GoTo NoComm
Init = False
With Comm
If Not .PortOpen Then
.Settings = "9600,N,8,1" '9600bauds/s , aucune parité , 8 bits de données , 1 bit de stop
.CommPort = 1 'CommPort
.InputMode = comInputModeText
.DTREnable = True
.Handshaking = comNone
.InBufferSize = 1024
.NullDiscard = True
.RTSEnable = False
.RThreshold = 1
.PortOpen = True
End If
End With
Wait 5
Init = True
On Error GoTo 0
Exit Function
NoComm:
On Error GoTo 0
End Function
'cette fonction va permettre de lire la température qu'indique notre capteur d'adresse XX
'sachant que nous avons 5 capteurs, d'adresses: 01 à 05
Public Function ReadTemperature(val_Temp As Double) As Boolean
'=======variables==========
Dim cmd As String
Dim rsp As String
Dim StartTime As Double
'==========================
'commande-------------
cmd = "#" & "05" & "0" & vbCr
'la commande pour lire une valeur est sous cette forme #AAx
'où AA correspond a l addrese de notre capteur et
'x correpond à ce qu'on souhaite mesurer, 0: lire température.
Comm.Output = cmd 'on envoit la commande vers notre capteur d'adresse AA
StartTime = TimerExtended
ReadTemperature = False
'réponse--------------
Do
DoEvents
rsp = rsp & Comm.Input '/!\ PROBLEME DE RECEPTION DES DONNEES ? /!\
If ElapsedTime(StartTime) > Timeout Then Exit Function
Loop Until InStr(rsp, vbCr) <> 0
If Left(rsp, 1) = ">" Then
val_Temp = Val(Mid(rsp, 2))
'on prend toute la chaine de caractère a partir du deuxième caractère(le signe). exemple de réponse >+023.21 soit 23.21°C
If val_Temp > -20 And val_Temp < 100 Then ReadTemperature = True End If
En y allant en mode debogage, je constate que la commande Outpu pour le com passe bien en lecture seule mais mon comm.Input est toujours a: "" donc rien ......
L adresse de mon capteur est bien 5 ....
De plus l entreprise qui a fournit le capteur propose un logiciel qui permet de régler le capteur et en le lancant j arrive bien a voir la température du capteur sur l écran de l ordi donc la liaison se fait ....
Je suis nouveau ICi mais svp aidez moi parce que la je sais plus quoi faire et y a pas grand monde pour m aider =)
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 21 avril 2011 à 15:47
Salut
Première chose : la liaison physique
Es-tu certain du paramétrage de COM ?
Comment est-elle cablée ? En 3 fils ou plus ?
Parce que le contrôle de flux matériel (CTS, RTS, etc) ne se fait plus beaucoup au profit du contrôle de flux (automatique) HandShaking avec codes Ascii 10 et 11.
3 fils = HandShaking actif
Plus = avec contrôle matériel
Pour le dialogue, comme expliqué dans l'aide de l'objet COM, la réception des données ne se provoque pas : il faut attendre que le buffer dise qu'il a quelque chose à lire.
Es-tu sûr que la fin de trame (émission comme réception) doive se terminer par un vbCr (13) ?
D'où sortent les instructions comme Wait ou ElapsedTime ?
Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés
Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
InfoGeo
Messages postés87Date d'inscriptionjeudi 2 février 2012StatutMembreDernière intervention17 avril 2013 22 avril 2011 à 09:11
salut, merci d avoir répondu, bah en fait si je suis sur que les cablages sont bon car comme je l ai écrit quand j utilise le logiciel de l entreprise arrive bien a voir la température sur l ordi donc c que la commande a bien été envoyé et qu on recoit correctement la réponse de l esclave.
Wait et Elapsedtime sont just des tempos et des sécurité, en fait un programme était deja fait et j'ai repris certaines choses comme les temps de sécurité comme ca, mais en mode débgage j arrive bien o moment ou ca faitrsp = rsp & Comm.input donc voila ^^
Donc pour l instant dans mon stage je fais rien, je me fai un peu ch... donc si vous pouviez m aider pour ce petit probleme, jsuis sur que c pas grand chose mais ca mes cas.... .. ...... =)
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 22 avril 2011 à 11:31
Code ascii..
au final, ce qui est transmis est toujours du numérique.
l'artifice d'utiliser des String dans VB embrouille son monde, mais derrière, on envoies toujours du numérique...
InfoGeo
Messages postés87Date d'inscriptionjeudi 2 février 2012StatutMembreDernière intervention17 avril 2013 22 avril 2011 à 11:54
ha c'est bon j'ai trouvé !!!!!!
Message pour une autre personne qui utiliserai un T3411 (ou meme un appareil de chez COMET)
Enlevez le cavalier !!!! (et bien sur changer le protocol en Adam sans CRC si vous voulez faire comme j ai fait pour la commande)