2017-08-21 4 views
2

J'essaie de transférer des données de forme d'onde de l'oscilloscope spécifié ci-dessus et de le commander en utilisant MATLAB. Voici ce que mon code ressemble à:Transfert de forme d'onde pour Tektronix TBS 1052B

tbs1052b = visa('ni','USB0::0x0699::0x0368::C020742::INSTR'); 
fopen(tbs1052b); 
fprintf(tbs1052b, 'ACQuire?') 
out_1 = fscanf(tbs1052b) 
fprintf(tbs1052b, 'DATa?') 
out_2 = fscanf(tbs1052b) 
fprintf(tbs1052b, 'DATa:WIDth 2') 
fprintf(tbs1052b, 'DATa?') 
out_3 = fscanf(tbs1052b) 
fprintf(tbs1052b, 'DATALOGging?') 
out_4 = fscanf(tbs1052b) 
fprintf(tbs1052b, 'DATALOGging:SOURCE CH1') 
fprintf(tbs1052b, 'DATALOGgING:STATE ON') 
fprintf(tbs1052b, 'DATa:ENCdg ASCIi') 
fprintf(tbs1052b,'DATa:STARt 1') 
fprintf(tbs1052b, 'DATa:STOP 10') 
fprintf(tbs1052b,'CURVe?') 
out_5 = fscanf(tbs1052b) 

Les 4 premières commandes de balayage travail et je reçois une réponse pour chacun d'eux. Cependant, je reçois un avertissement disant "Lecture infructueuse: VISA: Timeout a expiré avant que l'opération soit terminée. 'pour quand je scanne le dernier CURVe? commander. J'ai augmenté le délai jusqu'à la valeur maximale avec le même résultat. Des idées sur ce qui pourrait être faux?

Répondre

0

Ok, donc j'ai compris ce qui se passait. Je n'ai pas spécifié la source de données, ce qui explique pourquoi Curve ne savait pas d'où tirer les données. Ainsi, en ajoutant la ligne suivante résolu le problème:

fprintf(tbs1052b, 'DATa:SOUrce CH1') 

également quelques modifications plus impliquées correctement l'acquisition de données, qui est décrit par les commandes suivantes:

fprintf(tbs1052b, 'ACQuire:STATE ON') 
fprintf(tbs1052b, 'ACQuire:MODe SAMple') 
fprintf(tbs1052b, 'ACQuire:STOPAfter RUNSTop') 
pause(10) 
fprintf(tbs1052b, 'ACQuire:STATE OFF')