Gestion multicartes k8055 (code tuto)

Soyez le premier à donner votre avis sur cette source.

Vue 8 627 fois - Téléchargée 784 fois

Description

Ce code se veut être une base de travail pour ceux qui utilise les cartes VM110 (ou K8055). Il fait suite à mes remarques sur ces sources : http://www.vbfrance.com/codes/K8055-COMMANDE-SORTIES_50554.aspx
http://www.vbfrance.com/codes/VELLEMAN-K8055-PROGRAMME-COMPRENDRE-UTILISER-CODE-TESTER-AVEC_50158.aspx

Dans ce code vous avez la déclaration de la derniére DLL disponible; Je la joins => à placer dans system32
Cette exemple permet de voir :
' Création de controls en dynamique en fonction du nombre de cartes détectées (de 13 à 52)
' Utilisation des tags pour trouver quel control active quelle sortie et surtout sur quel carte (évite de tapper 52 fois le même code)
' Donc => factorisation du code et utilisation de fonction (autant que possible vu mon faible niveau en prog)
' Utilisation de gif annimées à la place de simple boutons (modifiable dans le rep PICS, garder le même nom !)
' Créer un tread pour la scrutation des entrées. (ne peu pas gérer les controls graphique)
' Donc => obligation de repasser par un timer pour mettre à jours les leds, et donc pouvoir modifier un control créé dynamiquement dans un code qui ne le connais pas encore en recherchant dans tous les controls de la form

' bugs ou problémes :
' utilisation de la RAm à revoir => consomme trop 14Mo pour une appli trés simple, viens surrement de la gestion des GIF.

Conclusion :


J'ai pris le temps de bien commenter le code, mais parfois un commentaire n'est pas assez explicite, demander si besoin.
Piocher des parties de codes ou utiliser la même philosophie pour bien utiliser la VM110
Ex Utiliser readdigitalchannel(voie) consomme 5 requétes de 10ms sur le port USB, Utiliser int=Readalldigital(), lis les 5 entrées d'un coup et ne consomme que 10ms. Cela devient TRES important pour la gestion multicarte.
Amusez vous bien avec ce trés bon produit, et son grand frére la VM140.
Kenavo.

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Messages postés
1172
Date d'inscription
jeudi 24 mai 2007
Statut
Membre
Dernière intervention
28 septembre 2013
1
ben déja commence par corriger ce genre de chose !
un string * double ! place option srict et explicit à on pour voir ces conversion explicite ;)
pas besoin non plus de compter les minutes, les tr/min ne sont que des hertz*60 (ou top par sec) * 60
Messages postés
7
Date d'inscription
vendredi 2 mai 2008
Statut
Membre
Dernière intervention
7 novembre 2010

bonsoir,le code lit le nombre de tour dans le text1 , ensuite je controle l'horloge pour les seconde,puis je multiplie "suivant le temps en seconde " par une valeur pour obtenir les tours/min , j'active le relais de montée ou de descente en fonction.Dans le text1 je ne peux pas le réinitialiser à 0 tant que le temps est inférieur à 60 secondes.J'ai opté à "select case" pour la rapidité.Je pense utiliser une variable interne pour le comptage et ensuite la réinitialiser après 5 secondes.J'aimerais placer mon code sur le forum.Merci de m'indiquer la procédure.Bàv
Messages postés
1172
Date d'inscription
jeudi 24 mai 2007
Statut
Membre
Dernière intervention
28 septembre 2013
1
TxtTrMin.Text = Text1.Text * 1.2
Oo" mes yeux ça pique lol

Quesque ton code est censé faire ? donne un cdc plutot.
F=1/T tu compte donc le nombre d'impulsion par seconde et tu as la fréquence. ensuite tu fais une moyenne toute les 10 mesures pour avoir une valeur stable (par exemple)
++
Messages postés
7
Date d'inscription
vendredi 2 mai 2008
Statut
Membre
Dernière intervention
7 novembre 2010

Bonjour , pas mal de soucis pour le compte tour.Avec un timer la gestion des impulsions etait trop complexe.J'ai decidé de travailler avec le time système pc.Mais il y a un défaut dans la boucle lors de l'affichage 10,20,30,40 et 50 sec.Il semble y avoir un rebond software de +- 4 impulsion.La vitesse maximum tester est de 1800 tr/min.Voici le code d'affichage impulsions.Merci de votre réponse.
Private Sub TimerRPM_Tick(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles Timer1.Tick

'mise en fonction du timer
TimerRPM.Enabled = True
'controle de la valeur du compteur d'impulsion
If Text1.Text > 0 Then
'affichage de la date et heures + minutes + secondes + millisecondes
Label5.Text = DateHeurePrecise()
'après 10 secondes : multiplication de la valeur du compteur et affichage
If TimeSeconde() = 10 Then
TxtTrMin.Text = Text1.Text * 6
End If
'après 20 secondes : multiplication de la valeur du compteur et affichage
If TimeSeconde() = 20 Then
TxtTrMin.Text = Text1.Text * 3
End If
'après 30 secondes : multiplication de la valeur du compteur et affichage
If TimeSeconde() = 30 Then
TxtTrMin.Text = Text1.Text * 2
End If
'après 40 secondes : multiplication de la valeur du compteur et affichage
If TimeSeconde() = 40 Then
TxtTrMin.Text = Text1.Text * 1.5
End If
'après 50 secondes : multiplication de la valeur du compteur et affichage
If TimeSeconde() = 50 Then
TxtTrMin.Text = Text1.Text * 1.2
End If
'controle de la valeur des secondes pour le reset du comptage d'impulsion
If TimeSeconde() <> 0 Then
Else
ResetCounter(1)
End If
Else
End If
End Sub
'Initilisation des variables de temps (horloge)
Private Structure SYSTEMTIME
Dim wYear As Short
Dim wMonth As Short
Dim wDayOfWeek As Short
Dim wDay As Short
Dim wHour As Short
Dim wMinute As Short
Dim wSecond As Short
Dim wMilliseconds As Short
End Structure

' Fonction : DateHeurePrecise
' Retour : Chaine de date heure formattée avec JJ/MM/AAAA et HH:MM:SS:mmm
' mmm représente les milliemes de secondes
Public Function DateHeurePrecise() As String
Dim Heure As SYSTEMTIME
GetSystemTime(Heure)
'utilisation de format pour meilleure lecture du resultat
DateHeurePrecise = "Le " & VB6.Format(Heure.wDay, "00/") & VB6.Format(Heure.wMonth, "00/") & VB6.Format(Heure.wYear, "0000") & " à " & VB6.Format(Heure.wHour, "00:") & VB6.Format(Heure.wMinute, "00:") & VB6.Format(Heure.wSecond, "00:") & VB6.Format(Heure.wMilliseconds, "000")
End Function
Public Function TimeSeconde() As String
Dim Seconde As SYSTEMTIME
GetSystemTime(Seconde)
'mémorisation de la valeur en seconde pour le controle de la vitesse en tours/min
TimeSeconde = VB6.Format(Seconde.wSecond, "00")
End Function
Messages postés
1172
Date d'inscription
jeudi 24 mai 2007
Statut
Membre
Dernière intervention
28 septembre 2013
1
pas de soucis, le projet m'interesse et j'ai plus rien à programmer...donc si besoin je suis là, enfin dans une dizaine de jours ;)
Afficher les 29 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.