programmation d'une carte d'acquisition sous vba

programmation d'une carte d'acquisition sous vba - VB/VBA/VBS - Programmation

Marsh Posté le 11-06-2007 à 17:37:45    

Bonjour
 
J'ai acheté une carte d'acquisition chez national instruments. J'ai donc installé les drivers qui m'était livrés avec la carte. Ne connaissant pas grand chose en programmation j'ai donc appelé NI pour avoir des renseignements. ils m'ont alors dis que je devais créer des taches avec un logiciel appelé measurement and automation explorer ce que j'ai et qu'ensuite je devais appeler mes taches avec des fonctions du style DAQmxLoadTask... Le problème c'est qu'en faisant cela vba me met un message d'erreur en disant qu'il ne connait pas la librairie de cette fonction. Je vous demande alors de l'aide car cela devient assez urgent. en effet je dois avoir fini cela d'ici vendredi.  
 
Merci d'avance pour vos réponses.

Reply

Marsh Posté le 11-06-2007 à 17:37:45   

Reply

Marsh Posté le 11-06-2007 à 18:02:05    

il te faut (trouver et) ajouter la référence NI-DAQmx 8.0 dans les librairies de ton projet.

Reply

Marsh Posté le 12-06-2007 à 08:12:30    

En fait nous avons déjà inclut une librairie appelé NI DAQmx C API mas cela ne change rien pour ce qui est de la librairie NI-DAQmx 8.0 je ne la trouve pas dans les références. Peux tu me dire où puis-je le trouver?
 

Reply

Marsh Posté le 12-06-2007 à 11:33:44    

Si elle n'apparaît pas dans les références il faut peut-être utiliser le bouton parcourir pour sélectionner le composant système correspondant à cette bibliothèque.
Encore faut-il connaître le nom de ce composant (.dll, .ocx, .olb, ...) et ça ne relève pas de compétences VB mais de la doc de ta carte ou des infos sur le web (pas cherché).


Message édité par tegu le 12-06-2007 à 11:33:55
Reply

Marsh Posté le 13-06-2007 à 08:48:54    

Pour ce qui est de la librairie j'ai fini par la trouver ainsi qu'un exemple de code qui à l'air de marcher mais une fois que j'ai fais marcher le fois une petite dixaine de fois VBA me met un message d'erreur qui me di dépassement de capacité. Je voulais savoir si quelqu'un savais ce que cela voulais dire et comment puis-je y remédier.

Reply

Marsh Posté le 13-06-2007 à 08:50:21    

les valeurs que tu veux mettre dans tes variables doivent dépasser la capacité définie, pour quelle ligne de code ca plante stp ?

Reply

Marsh Posté le 13-06-2007 à 09:21:17    

Je ne sais pas quel ligne plante car c'est dès le démarrage du programme qu'il me met le message d'erreur mais je te met mon code. Si tu apperçois des anomali fais le moi savoir merci beaucoup de ton aide car j'en ai bien besoin.
 
Dim sampsPerChanWritten As Long
Dim test As Long
Dim taskhandle As Long
Dim delay As Double
Dim Status As Integer
 
Private Sub Configure_Port_Click()
 
    Status = DAQmxCreateTask("", taskhandle)
    Status = DAQmxCreateDOChan(taskhandle, "dev1/port0/line0:7", "", DAQmx_Val_ChanForAllLines)
    Status = DAQmxStartTask(taskhandle)
End Sub
 
Private Sub Stop_Task_Click()
Status = DAQmxStopTask(taskhandle)
Status = DAQmxClearTask(taskhandle)
End Sub
 
Private Sub Write_Logic_0_Click()
   ' Write zeros or ones to the digital lines
    Dim i As Integer
    Dim writeArray(0 To 7) As Byte
    For i = 0 To 7
    ' Reverse Logic
        writeArray(i) = 1
    Next
     
    Status = DAQmxWriteDigitalLines(taskhandle, 1, True, 10#, DAQmx_Val_GroupByChannel, writeArray(0), sampsPerChanWritten, ByVal 0& )
     
     
End Sub
 
Private Sub Write_Logic_1_Click()
    ' Write zeros or ones to the digital lines
    Dim i As Integer
    Dim writeArray(0 To 7) As Byte
    For i = 0 To 7
    ' Reverse Logic
        writeArray(i) = 0
    Next
       
    Status = DAQmxWriteDigitalLines(taskhandle, 1, True, 10#, DAQmx_Val_GroupByChannel, writeArray(0), sampsPerChanWritten, ByVal 0& )
End Sub

Reply

Marsh Posté le 13-06-2007 à 09:45:48    

Il vient de se passer quelque chose de bizarre car je n'ai plus de message d'erreur de dépassement de capacité sans rien avoir changé. Maisj'ai une erreur qui me dis type d'argument ByRef incompatible sur la ligne status = DAQmxCreateTask("",Taskhandle).  désolé de vous demander tant de choses mais je débute sous visual basic et il ne me reste plus beaucoup de temps pour finir mon programme.
 
merci de vos réponses.

Reply

Marsh Posté le 13-06-2007 à 09:51:50    

a aucun moment tu ne définis ton taskhandle, la valeur a passer en paramètre étant à mon avis primordial, il faut que tu lui attribues une valeur. Est-ce fait ?

Reply

Marsh Posté le 13-06-2007 à 11:29:02    

Je viens de le faire et cela marche très bien car VBA ne se met plus en erreur je te dis un grand merci car si tu ne m'avais pas aidé je serais toujours bloqué.  
 
MERCI beaucoup de ton aide  

Reply

Marsh Posté le 13-06-2007 à 11:29:02   

Reply

Marsh Posté le 15-06-2007 à 17:12:22    

Désolé de vous demander encore quelque chose mais après le code pour la programmation. j'airéaliser le programme que je voulais réaliser et tout s'est bien passé. Je l'ai lancé et là il a tourner deux ou trois fois et mes cartes d'acquisition se sont mis à bugger. En effet l'une d'elle me délivre tout le temps 5V et l'autre ne délivre jamais 5V. Je voulais savoir si quequ'un avait une idée de ce qui se passe car moi je suis perdu
Merci de vos réponses

Reply

Marsh Posté le 15-06-2007 à 17:18:08    

amha, tu devrais aller demander ca dans un autre forum que celui de vb/a/s...
aucune idée de mon côté

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed