CVI大神帮帮忙,TCP仪器通信问题

2019-07-18 08:34发布

//用户名设置errvi->error=viRead (vi, c, 4,retCount);              //c=80000009errvi->error=viRead (vi,d, 9, retCount);              //d=”username”WT3000Write(errvi,"anonymous",&Acknowledge,&DataLength);  //密码设置errvi->error=viRead (vi, c, 4, retCount);              //c=80000009errvi->error=viRead (vi,d, 9, retCount);               //d=”password”WT3000Write(errvi,"",&Acknowledge,&DataLength);//电压量程设置errvi->error=viRead (vi, c, 4,retCount);               //c=80000014errvi->error=viRead (vi,d, 20,retCount);               //d=”clt serveris ready.”WT3000Write(errvi,":VOLT:MODE:ALLRMS;:VOLT:AUTO OFF;:VOLT:RANG:ALL1000V;",&Acknowledge,&DataLength); void WT3000Write(struct errorvi*errvi1,char WriteDate[],int*Acknowledge,int*DataLength){int changdu=0;int b=0x0;char c[20]="";int result=0;char bchar[200]="";         if(SkipWhiteSpace (WriteDate)==NULL)        {         changdu=0;        }        else        {         changdu=strlen(WriteDate);        }         *DataLength=changdu;                      //9 b=0x80000000|changdu;                             //0x80000009 bchar[0]=(b>>24)&0x00ff; bchar[1]=(b>>16)&0x00ff; bchar[2]=(b>>8)&0x00ff; bchar[3]=b&0x00ff; strcat(bchar+4,WriteDate); errvi1->error=viWrite (vi, bchar, 200, retCount); //Delay(5); errvi1->error=viRead (vi, c, 4, retCount);      //返回指令放在c}采用Labwindows与可编程功率测试仪WT3000  TCP通信,其中WT3000Write中将要发送的内容与内容的长度连接起来通过viWrite写入,然后立即读回一个返回指令。在用户名设置和密码设置中都能够成功返回指令80000000,在电压量程设置中的程序死在WT3000Write里面的visa read:timeout expired before operation completed.理论上也应该收到返回指令80000000,但是总是收不着,,改变超时时间、改变viWriteviRead之间的时间间隔好像都不起作用。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
4条回答
fantek
2019-07-18 08:41
本帖最后由 fantek 于 2013-9-30 18:25 编辑

检查errvi1->error=viWrite (vi, bchar, 200, retCount);语句中的retCount是否为200,或者是否等于你发送字符串的长度,如果不是,说明参数配置没有正确完成,仪器可能错误响应下面的viread()函数。建议对所有函数执行后的retCount进行检查,viWrite()和viRead()函数好象还有一个传入参数,即错误代码,根据错误代码可以查找函数的错误信息。

一周热门 更多>