@@ -134,10 +134,6 @@ SiglentSCPIOscilloscope::SiglentSCPIOscilloscope(SCPITransport* transport)
134134 , m_digitalAcqPointsValid(false )
135135 , m_highDefinition(false )
136136{
137- // Enable command rate limiting
138- // TODO: only for some firmware versions or instrument SKUs?
139- transport->EnableRateLimiting (chrono::milliseconds (50 ));
140-
141137 // standard initialization
142138 FlushConfigCache ();
143139 IdentifyHardware ();
@@ -416,6 +412,15 @@ void SiglentSCPIOscilloscope::IdentifyHardware()
416412 LogWarning (" Model \" %s\" is unknown, available sample rates/memory depths may not be properly detected\n " ,
417413 m_model.c_str ());
418414 }
415+ if (m_protocolId != PROTOCOL_E11 || m_modelid == MODEL_SIGLENT_SDS2000XP)
416+ { // Enable command rate limiting => 50ms for older models
417+ m_transport->EnableRateLimiting (chrono::milliseconds (50 ));
418+ }
419+ else
420+ { // Only 5 ms for newer models
421+ m_transport->EnableRateLimiting (chrono::milliseconds (5 ));
422+ }
423+
419424 }
420425 else
421426 {
@@ -2114,7 +2119,8 @@ bool SiglentSCPIOscilloscope::AcquireData()
21142119 analogWaveformData[i] = new char [acqBytes];
21152120 if (!paginated)
21162121 { // All data fits one page
2117- m_transport->SendCommand (" :WAVEFORM:SOURCE C" + to_string (i + 1 ) + " ;:WAVEFORM:DATA?" );
2122+ m_transport->SendCommand (" :WAVEFORM:SOURCE C" + to_string (i + 1 ));
2123+ m_transport->SendCommand (" :WAVEFORM:DATA?" );
21182124 analogWaveformDataSize[i] = ReadWaveformBlock (acqBytes, analogWaveformData[i], hdWorkaround);
21192125 // This is the 0x0a0a at the end
21202126 m_transport->ReadRawData (2 , (unsigned char *)tmp);
@@ -2124,7 +2130,8 @@ bool SiglentSCPIOscilloscope::AcquireData()
21242130 m_transport->SendCommand (" :WAVEFORM:SOURCE C" + to_string (i + 1 ));
21252131 for (uint64_t page = 0 ; page < pages; page++)
21262132 {
2127- m_transport->SendCommand (" :WAVEFORM:START " + to_string (page*pageSize) + " ;:WAVEFORM:DATA?" );
2133+ m_transport->SendCommand (" :WAVEFORM:START " + to_string (page*pageSize));
2134+ m_transport->SendCommand (" :WAVEFORM:DATA?" );
21282135 analogWaveformDataSize[i] += ReadWaveformBlock (acqBytes-analogWaveformDataSize[i], analogWaveformData[i]+analogWaveformDataSize[i], hdWorkaround);
21292136 // This is the 0x0a0a at the end
21302137 m_transport->ReadRawData (2 , (unsigned char *)tmp);
@@ -2530,6 +2537,10 @@ float SiglentSCPIOscilloscope::GetChannelVoltageRange(size_t i, size_t /*stream*
25302537
25312538void SiglentSCPIOscilloscope::SetChannelVoltageRange (size_t i, size_t /* stream*/ , float range)
25322539{
2540+ // Only for analog channels
2541+ if (i >= m_analogChannelCount)
2542+ return ;
2543+
25332544 float vdiv = range / 8 ;
25342545 m_channelVoltageRanges[i] = range;
25352546
@@ -5497,7 +5508,7 @@ void SiglentSCPIOscilloscope::SetFunctionChannelOutputImpedance(int chan, Functi
54975508 */
54985509void SiglentSCPIOscilloscope::ForceHDMode (bool mode)
54995510{
5500- if ((m_modelid == MODEL_SIGLENT_SDS800X_HD || m_modelid == MODEL_SIGLENT_SDS2000X_HD ) && mode != m_highDefinition)
5511+ if ((m_protocolId == PROTOCOL_E11 ) && ( mode != m_highDefinition) )
55015512 {
55025513 m_highDefinition = mode;
55035514 sendOnly (" :WAVEFORM:WIDTH %s" , m_highDefinition ? " WORD" : " BYTE" );
0 commit comments