Posted Thu, 28 Sep 2023 02:42:42 GMT by Sun, Siyuan
Dear experts

I'm using 3 series MDO and trying to get waveform data points from multiple channels at the same time, here is what I tried:

I send "ACQuire:STOPAfter SEQuence", then for every event I send "ACQuire:STATE ON", then I loop over channels and send "DATA:SOUrce CHi" where i is the channel number and finally use "CURve?" to get data points.

But I can only get the first channel's data points, how can I get all channel's waveform in the same sequence (same time)?

Here I paste part of my c++ code:

char recv_str[65534];

        SendCommand(socketOsc, "ACQuire:STOPAfter SEQuence\n");

        for(int iEvent=0; iEvent < nEvent; ++iEvent){

                SendCommand(socketOsc, "ACQuire:STATE ON\n");

                for(int iCh=0; iCh < nCh; ++iCh){

                        std::string cmd = "DATa:SOUrce CH" + std::to_string(iCh + 1) + "\n";

                        SendCommand(socketOsc, cmd.c_str());

                        memset(recv_str, 0, sizeof(recv_str));

                        SendCommand(socketOsc, "CURVe?\n");

                        if( recv(socketOsc, recv_str, sizeof(recv_str), 0) <= 0){

                                std::cerr<<"Failed to read data from Oscilloscope"<<std::endl;

                                exit(-1);

                        }
                        //do something
                 }
        }

Posted Thu, 28 Sep 2023 23:36:35 GMT by Teles, Afonso
Hi Siyuan,

I would suggest querying "data:source?" after you set it to make sure it's set to what you expect.

You must be signed in to post in this forum.