LabWindows/CVI通过VISA实现串口通讯读不到返回数据

仪器能收到已发指令,但是软件读不回来数据

定义DATABUFFSIZEZLZ32长度为50
/数据接收处理显示/
int CVICALLBACK DataPorAndDispThreadFunctionZLZ32 (void *unused)
{
//存放读取数据和数据长度
int len = 0;
ViChar responseZLZ32Buffer[DATABUFFSIZEZLZ32] = {0};
ViChar responseZLZ32[DATABUFFSIZEZLZ32] = {0};

while(1)
{
    if(DataPorAndDispThreadFunctionPCRunning == 1)
  {
    len = Readdata_ZLZ32(responseZLZ32Buffer,responseZLZ32);//读取数据
    
    if(len > LEN_RETURN_OUTP_ZLZ32)                                                     
    {
        Scan (responseZLZ32, "%s>%f[x]%f[x]", &data_ZLZ32.volt_Output, &data_ZLZ32.curr_Output);
        
        SetCtrlVal (ZLZ32.panelHandle, PANELZLZ32_STRING, data_ZLZ32.volt_Output); //显示输出电压
        SetCtrlVal (ZLZ32.panelHandle, PANELZLZ32_STRING_2, data_ZLZ32.curr_Output); //显示输出电流    
    }
    if(len == LEN_RETURN_OUTP_ZLZ32)
    {
        Scan (responseZLZ32, "%s>%i[x]", &data_ZLZ32.status_Output);
        
        (0 == data_ZLZ32.status_Output) ? SetCtrlVal (ZLZ32.panelHandle, PANELZLZ32_LED, 0) : SetCtrlVal (ZLZ32.panelHandle, PANELZLZ32_LED, 1);//显示输出状态

    }

int Readdata_ZLZ32(char buffer1[],char buffer2[])
{
ViStatus err;
DisableBreakOnLibraryErrors();
err = viRead (ZLZ32.viHandle, buffer1, DATABUFFSIZEZLZ32, NULL);
EnableBreakOnLibraryErrors();
if(err>=VI_SUCCESS)
{
sscanf(buffer1,"%[^\r]",buffer2);
strcat(buffer2,"\r");
}
if(err>=VI_SUCCESS)
ZLZ32.count_LinkStatus =0;

return(strlen(buffer2));

}

部分代码如上,省略掉发送通讯协议里指令的部分。求指教。

你好,我是有问必答小助手,非常抱歉,本次您提出的有问必答问题,技术专家团超时未为您做出解答


本次提问扣除的有问必答次数,将会以问答VIP体验卡(1次有问必答机会、商城购买实体图书享受95折优惠)的形式为您补发到账户。


因为有问必答VIP体验卡有效期仅有1天,您在需要使用的时候【私信】联系我,我会为您补发。