Convertir un CString en ViBuf (visual studio 2010/C++/Visa.h)

vybz_kartel - 23 mars 2015 à 14:51
 vybz_kartel - 26 mars 2015 à 10:46
Bonjour tout le monde,

J'essaie de créer une IHM sous visual studio 2010 afin de piloter un atténuateur.

Je suis notamment amené a utiliser la fonction viWrite() (librairie VISA) qui permet d 'envoyer une commande à l'appareil de mesure, et qui prend en paramètre une variable de type ViBuf.

Pour mettre l'attenuation a 50 dB il faut envoyer la commande: "A050,"

Voulant permettre à l'utilisateur de mon IHM de modifier l'atténuation de l'appareil selon ses désirs( Cstring valeur) , je crée par conséquent :

CString attenutation=( Cstring ) "A0" + valeur + (Cstring) "," ;

il me faut maintenant convertir ceci en ViBuf pour l' envoyer a l'appareil grace a la fonction ViWrite...

Si quelqu'un peux me débloquer, je lui en serait très reconaissant!

2 réponses

yann_lo_san Messages postés 1137 Date d'inscription lundi 17 novembre 2003 Statut Membre Dernière intervention 23 janvier 2016 26
25 mars 2015 à 22:05
Salut,

tu peux optimiser un peu ton CString
int valeur = 50;
CString attenuation(_T("A0"));
attenuation.AppendFormat("%d,", valeur);


Ensuite ViBuf n'est pas un type mais le nom du buffer
Le type est ViChar qui doit etre défini comme ceci
typedef char ViChar;

Donc un simple GetBuffer() / ReleaseBuffer() fait l'affaire

const int VIBUF_LEN = 32;
ViChar viBuf[VIBUF_LEN];

lstrcpy(viBuf, attenuation.GetBuffer());
attenuation.ReleaseBuffer();

viWrite(?, viBuf, lstrlen(viBuf), ?);   



bye...
1
vybz_kartel
26 mars 2015 à 10:46
merci beaucoup mec t'es au top !

Que t'aille au paradis de l'informatique avec 999 vier... euh ordi a programmer bien sur!

Bonne continuation
0
Rejoignez-nous