Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Issue at repeating measurements #175

Open
AZahoneroAT3W opened this issue Oct 5, 2021 · 2 comments
Open

Issue at repeating measurements #175

AZahoneroAT3W opened this issue Oct 5, 2021 · 2 comments

Comments

@AZahoneroAT3W
Copy link

AZahoneroAT3W commented Oct 5, 2021

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.

@colinoflynn
Copy link
Owner

What might be helpful is to add code to dump the value of each of those - not sure which one is getting set to None.

Typically this is because of some collision in variable namespace - the first time through it was set correctly, after that it got overwritten. But I think it might make more sense if you can see which variable is having the issue!

@AZahoneroAT3W
Copy link
Author

I avoided this simply by programing the code I shown as a function for a single measurement and looping that one on another function, which worked for me. If anyone having the same issue ask I can upload my functions. Thanks for the help anyway!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants