2016-11-10 5 views
-1

Working LabVIEW CodeLecture CI Fréquence en C# avec NI USB-6363

attaché ci-dessus est le code LabVIEW que je l'ai utilisé avec succès dans le passé pour lire des données de fréquence à partir d'un appareil. J'utilise également généralement le VI Démarrer la tâche entre mon nœud de propriété et sa boucle while. J'essaye de coder ceci en C#. Jusqu'à présent, j'ai réussi à coder les sorties analogiques et analogiques sur mon périphérique, USB-6363, (donc je sais que je peux écrire et lire des données de l'appareil avec succès avec C#).

J'ai également utilisé des multimètres (lien Grainger en bas de la colonne) pour lire les données de fréquence (mode Orange Hz sur lequel l'appareil est réglé dans l'image).

Cependant, mon code C# semble avoir des problèmes de lecture des données de fréquence. Mon code C# est attaché. Lorsque j'essaye d'exécuter ce programme, j'obtiens l'erreur suivante. C'est la même erreur que je reçois lors de l'utilisation du programme exemple appelé 'MeasDigFreqBuffCont_ExtClk_ArmStart.2013'. Le code que je montre est juste en train de créer la tâche, j'appelle le code plus tard dans mon programme dans une section différente et c'est ainsi que je reçois l'erreur.

---------------------------------------------- --- Commencer le code d'erreur -------------------------------------------- -----

{erreur = -200077 message = "valeur demandée n'est pas une valeur prise en charge pour cette propriété La valeur de la propriété peut être invalide parce qu'il est en conflit avec une autre propriété \ n \ nProperty..: NationalInstruments.DAQmx.CIChannel.FrequencyDivisor \ nRequested Valeur: 1 \ valeurs nPossible: 4 à 4294967295 \ nChannel Nom: Digital Fréquence \ n \ nTask Nom: _unnamedTask < 0> \ n \ nStatut code: -200077" }

-------------------------------------------- ----- Code d'erreur de fin ------------------------------------------ --------

Dans l'exemple de programme qu'il demande une source d'horloge d'échantillonnage (a de canal de PFI du dispositif). Cependant, dans le code LabVIEW, il ne le demande pas. Cet exemple est peut-être plus détaillé que ce que j'essaie de faire?

Task frequencyInput = new Task(); 

frequencyInput.CIChannels.CreateFrequencyChannel(
       "Dev1/ctr0", 
       "Digital Frequency", 
       200, 
       15000, 
       CIFrequencyStartingEdge.Rising, 
       CIFrequencyMeasurementMethod.DynamicAveraging, 
       0.001, 
       1, 
       CIFrequencyUnits.Hertz 
       ); 


frequencyInput.CIChannels["Digital Frequency"].FrequencyTerminal = "/Dev1/PFI0"; 

CounterSingleChannelReader counterFreq = new CounterSingleChannelReader(frequencyInput.Stream); 


double counterFreqData = counterFreq.ReadSingleSampleDouble(); 

txtPFI0.Text = Convert.ToString(counterFreqData); 

FLUKE (R) Fluke-115 Compact - Basic Features Digital Multimeter, 14° to 122°F Temp. Range

+0

S'il vous plaît coller le code à partir du haut de la question dans la question * comme texte *, pas en tant qu'image – Amy

+1

Amy, Le code en haut de la question est du code LabVIEW, donc il n'y a pas de code basé sur du texte. LabVIEW est un langage de codage graphique. –

+0

OK. Imgur est bloqué ici, merci. – Amy

Répondre

2

Mise en forme du message d'erreur:

valeur demandée n'est pas une valeur prise en charge de cette propriété. La valeur de la propriété peut être invalide car elle est en conflit avec une autre propriété.

Propriété: NationalInstruments.DAQmx.CIChannel.FrequencyDivisor
Valeur demandée: 1
Valeurs possibles: 4-4294967295

Nom de la tâche: _unnamedTask < 0>
Code d'état: -200077

Selon le documentation, vous êtes demander à l'appareil d'utiliser un diviseur non valide. Changez votre 1 à un 4:

frequencyInput.CIChannels.CreateFrequencyChannel(
       "Dev1/ctr0", 
       "Digital Frequency", 
       200, 
       15000, 
       CIFrequencyStartingEdge.Rising, 
       CIFrequencyMeasurementMethod.DynamicAveraging, 
       0.001, 
    /* here */ 4, 
       CIFrequencyUnits.Hertz 
       ); 

NI installs C# examples for DAQmx, et une comprend pour la fréquence de mesure:

C:\Users\Public\Documents\National Instruments\NI-DAQ\Examples\DotNET4.0\Counter\Measure Digital Frequency\MeasDigFrequency_LowFreq1Ctr\CS

+1

Joe, Cela a répondu à ma question. Donc, dans mon code final, j'ai dû changer de 1 à 4 comme vous l'avez suggéré. Je devais aussi changer de CIFrequencyMeasurementMethod.DynamicAveraging À CIFrequencyMeasurementMethod.LowFrequencyOneCounter C'est ce qui est montré dans l'exemple que vous avez fourni. Je vous remercie. –