Skip to content

Issue at repeating measurements #175

@AZahoneroAT3W

Description

@AZahoneroAT3W

Hello guys,
I've been working with the scripts for some weeks now and since this point its all working well. My current objetive is to make the measurements repeatible, as I'm trying to make frequency sweeps. The script I've been working with till now:

    print("Attempting to open Picoscope 2000...")
    ps = ps2000a.PS2000a()
    print("Found the following picoscope:")
    print(ps.getAllUnitInfo())
    Ipeaks=[]
    Vpeaks=[]
    while(True):
        check=input("ready?")
        if check != 'y':
            Vpeaks=list(map(str, Vpeaks))
            Ipeaks=list(map(str, Ipeaks))
            for i in range(len(Vpeaks)):
                Vpeaks[i]=Vpeaks[i].replace('.',',')
                Ipeaks[i]=Ipeaks[i].replace('.',',')
            hoy=datetime.now()
            forma=hoy.strftime('%d%m%y%H%M')
            directorio=r"C:/Users/azahonero/Documents/Mejoradores/temp/{}.txt" .format(forma)
            fd= open("{}" .format(directorio), "w+")
            fd.write('Ipeaks, Vpeaks \n')
            j=0
            for j in range (0,len(Ipeaks),1):
                fd.write("{}, {}\n" .format(Ipeaks[j], Vpeaks[j]))
            fd.close()
            return Ipeaks, Vpeaks
        else:
            inyec=eval(input('Frecuency: '))
            if inyec<100000:
                waveform_desired_duration = 50E-4
                obs_duration = 3 * waveform_desired_duration
                sampling_interval = obs_duration / 8192
                (actualSamplingInterval, nSamples, maxSamples) = \
                ps.setSamplingInterval(sampling_interval, obs_duration)
            elif inyec>=100000:
                waveform_desired_duration = 50E-5
                obs_duration = 3 * waveform_desired_duration
                sampling_interval = obs_duration / 8192
                (actualSamplingInterval, nSamples, maxSamples) = \
                ps.setSamplingInterval(sampling_interval, obs_duration)
            else:
                return 'error'
            print("Sampling interval = %f ns" % (actualSamplingInterval * 1E9))
            print("Taking  samples = %d" % nSamples)
            print("Maximum samples = %d" % maxSamples)

It keeps on, but the rest works properly. The point is that it executes one time perfectly, but when it returns to the ps.setSamplingInterval for the second time I get this error:

File "", line 1, in
repmeas()

File "C:\Users\azahonero\Documents\uic\Scriptspico3.py", line 159, in repmeas
ps.setSamplingInterval(sampling_interval, obs_duration)

File "C:\Users\azahonero\Anaconda3\lib\site-packages\picoscope\picobase.py", line 318, in setSamplingInterval
(self.sampleInterval, self.maxSamples) = self._lowLevelGetTimebase(

File "C:\Users\azahonero\Anaconda3\lib\site-packages\picoscope\ps2000a.py", line 299, in _lowLevelGetTimebase
c_int16(self.handle), c_uint32(tb), c_uint32(noSamples),

TypeError: an integer is required (got type NoneType)

So it seems that some argument of the low level function doesn't reach this point. I dont really understand why, as it works only the first time without problems. The point is that I need to change the duration of the waveform because my range of frequencies is wide and at lower frequencies I dont get a full period with waveform_desired_duration = 50E-5. Moreover, I'm aiming to optimize the resolution of the measurement as much as posible, but found this problem. I can avoid this by not changing the waveform_desired_duration (that's what I really need to change) but then other low level functions give similar errors. I dont really know what more to try, so will really appreciate any idea.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions