Précédent   Forum du club des développeurs et IT Pro > Autres langages > Général Visual Basic 6 et VBScript > Discussions diverses
Discussions diverses réservé, comme son nom l'indique, aux questions d'ordre général, qui n'entrent dans aucune des catégories des liens proposés plus haut.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 11/05/2010, 10h28   #1
ProfesseurTournesol
Invité de passage
 
Cedric Paroz
Inscription : mai 2010
Messages : 3
Détails du profil
Informations personnelles :
Nom : Cedric Paroz

Informations forums :
Inscription : mai 2010
Messages : 3
Points : 0
Points : 0
Par défaut Definition d'interface pour système Keithley

Bonjour,

Il y a un mois, j'ai acheté des systèmes d'acquisition de type KUSB 3100 de chez Keithley.

Je veux faire une application de mesure de signaux sous VB (ce qui est disponnible chez mon employeur actuel).

A priori, cela est possible, la DLL fournie avec l'appareil peut bien être adressés par VB, mais la documentation disponible ne fournit que le nom des fonctions de la DLL. Elle ne décrit ni les paramètres, ni les valeurs de retour, ni les types des données échangées.

En bricolant un peu, j'ai réussi à déclarer correctement la première fonction :

Code :
1
2
3
4
5
Declare Function olDaInitialize Lib "OLDAAPI32.DLL" (ByVal lpszName As String, ByRef lphDev As Long) As Long
'Et à l’utiliser avec success :
    Dim m_board As Board
    m_board.name = "KUSB-3100(00)"
    m_board.status = olDaInitialize(m_board.name, m_board.hdrvr)
Mais à tâtonner ainsi deux jours par fonctions ... je ne m'en sortirai jamais. Il me reste au moins 8 fonctions à "deviner" ... (olDaGetDASS, olDaSetDataFlow, olDaSetChannelType, olDaSetEncoding, olDaSetRange, olDaConfig, olDaGetSingleValue, olDaReleaseDASS).

Le support de vente Keithley semble ne même pas savoir ce qu'est la définition de l'interface et s'avère innutile malgré mes demandes insistantes depuis un mois.

Est-ce que par chance quelqu'un ici disposerait d'un fichier VB contenant les définitions pour l'utilisation de cette DLL (OLDAAPI32.DLL) ?

Promis, je mets mon programme en ligne dès qu'il est prêt !
ProfesseurTournesol est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/05/2010, 18h13   #2
ProgElecT
Rédacteur/Modérateur
 
Avatar de ProgElecT
 
Homme Francis MILLET
Inscription : décembre 2004
Messages : 3 198
Détails du profil
Informations personnelles :
Nom : Homme Francis MILLET
Âge : 57
Localisation : France, Haute Savoie (Rhône Alpes)

Informations professionnelles :
Secteur : Communication - Médias

Informations forums :
Inscription : décembre 2004
Messages : 3 198
Points : 5 110
Points : 5 110
Envoyer un message via MSN à ProgElecT
En utilisant Google avec KUSB 3100 Keithley, le premier lien te permettra de charger un fichier KUSB Event Counting.ZIP, une fois decompressé, tu y trouveras un projet (VB Counter) ecrit en VB6 , ou dans le .BAS il y a toutes les procedures et constantes avec petit commentaire (en anglais).
ProgElecT est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/05/2010, 08h55   #3
ProfesseurTournesol
Invité de passage
 
Cedric Paroz
Inscription : mai 2010
Messages : 3
Détails du profil
Informations personnelles :
Nom : Cedric Paroz

Informations forums :
Inscription : mai 2010
Messages : 3
Points : 0
Points : 0
Merci pour cette rapide réponse**.

Malheureusement, aucune des fonctions dont j'ai besoins (liste fournie dans mon message original) n'est définie dans ce fichier.


Le problème est que dans la documentation officielle de Keythley (document KUSB_3100UM.PDF)* plusieurs séquences de programmation sont données, et elles évoquent toutes les fonctions olDaInitialize, olDaGetDASS, olDaSetDataFlow, olDaSetChannelType, olDaSetEncoding, olDaSetRange, olDaConfig, olDaGetSingleValue, olDaReleaseDASS, etc.



Mais les définitions de ces fonctions (pourtant clairement préconnisées par Keithley dans leur doc officielle*) ne se trouvent nulle part dans leur doc, pas même dans les nombreux exemples fournis par Keythley.


Bien sur, je peux probablement aussi ne pas utiliser ces fonctions et en utiliser d'autres ... mais alors le problème est que je n'ai pas d'explication sur la séquence d'actions à mettre en oeuvre... et les exemples que j'ai étudié jusqu'à présent ne m'aident pas vraiment.

Pourtant, ce que je veux faire est archi simple ... prendre une valeur chaque 10 minutes sur chaque canal analogique de deux modules et enregister ces 16 valeurs dans un fichier accessible à distance.

Toute aide sera la bienvenue, merci déjà !



*
Citation:
Extrait de la page 45 :
Single-Value Operations

Initialize the device driver and get the device handle with olDaInitialize

Get a handle to the subsystem with olDaGetDASS

Set the data flow to OL_DF_SINGLEVALUE using olDaSetDataFlow

For the A/D and D/A subsystems, set the channel type to OLSSC_SUP_SINGLEENDED using olDaSetChannelType

For the A/D and D/A subsystems, set the data flow to OLSSC_SUP_2SCOMP for twos complement data encoding using olDaSetEncoding.

For the A/D and D/A subsystems, set the range using olDaSetRange.

Go to the next page.
Aucune de ces fonction n'est décrite ... et je te garanti que ce n'est pas faute d'avoir cherché tant sur le net qu'auprès du SAV officiel.

** ... en fait, je ne t'avais pas attendu pour chercher dans Google, et ce magnifique fichier je l'ai déjà depuis 3 semaines .
ProfesseurTournesol est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/06/2010, 19h44   #4
ProfesseurTournesol
Invité de passage
 
Cedric Paroz
Inscription : mai 2010
Messages : 3
Détails du profil
Informations personnelles :
Nom : Cedric Paroz

Informations forums :
Inscription : mai 2010
Messages : 3
Points : 0
Points : 0
Finalement, une personne de chez Keithley m'a indiqué dans quel fichier se trouvent les définitions des fonctions.
Puis il m'a indiqué dans quel fichier se trouvent les définitions des constantes utilisées par ces définitions ...

Maheureusement, ces constantes ne correspondent pas à la réalité.

Par exemple, la constante OL_CHNT_SINGLEENDED dont la documentation officielle Keithley dit qu'elle vaut 0 ne vaut en réalité pas 0, mais 100.

Cette certitude provient du fait qu'en utilisant les valeurs fournies pas la doc officielle, les fonctions retournent des erreurs, alors qu'en faisant un véritable travail de détective, on finit par trouver des valeurs qui marchent.

Dans la doc, la valeur de OL_ENC_2SCOMP est 1 alors que en pratique, pour que le système fonctionne, sa valeur doit être 201.


Le plus rageant, c'est qu'avec une documentation fausse incomplète et sans vue d'ensemble, Keithley m'a fait perdre plusieurs semaines ... et ne se donnent même pas la peine de répondre à mes requêtes.
Donc, mon conseil du jour, si vous avez besoins d'un système d'acquisition que vous comptez personnaliser, achetez plutôt autre chose que Keithley.

Actuellement mon programme fonctionne, mais faute d'avoir une documentation correcte, il est difficilement paramètrable (il faut tâtonner et faire des essais pour déterminer les valeurs des constantes requises par le système).

Je le publierai d'ici quelques jours.
ProfesseurTournesol est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 14h23.


 
 
 
 
Partenaires

Hébergement Web