Hi.

I think that you need to put all pyqtgraph and other graphic stuff
(including window initialization, processEvents etc.) in a separate thread
and to plot a shared data you have every 0.1s. Look at FuncThread class at
bottom of page
http://softwareramblings.com/2008/06/running-functions-as-threads-in-python.html,
could save you a time. So, one thread for graphic stuff, one or calculation.

Good luck,
Vasilije

On Mon, Jul 25, 2016 at 4:52 PM, Igor Muniz <[email protected]>
wrote:

> Hi guys,
>
> I'm trying to plot a real time signal with python and PyQtGraph has
> improved the speed a lot, but still with some delay. The data comes from a
> DLL and it's store in a NumPy Vector.
> I wan't to plot this buffer every 0.1s with 100 points(the signal has 1kHz
> sampling rate). At the beginning this seems to work but after few seconds 
> starts
> to get behind the plot.
>
> This is part of my code:
>
> def coleta():
>     global cnt
>     global t
>
>     nsample = c_ulong(int(0.1 * sampleRate.value))
>
>     status = emgSampleNSeconds(handle.value, 50)
>
>     if status == 0:
>         print("Inicia a amostragem")
>     else:
>         print("Não foi possível iniciar a amostragem")
>     emgIsSampling(handle.value, byref(isSampling))
>
>
>     canal = c_ulong(0)
>     emgbuffer = (c_double * nsample.value)()
>
>
>
>
>     emgDataPlot = np.zeros(10000, dtype=float)
>
>     curve1 = p1.plot(emgDataPlot, pen='r')
>     sleepVar = 0.1
>     pltStart = pg.ptime.time()
>     while isSampling:
>         time.sleep(sleepVar)
>         emgGetRealUnitDataBlock(handle.value, canal.value, emgbuffer, 
> byref(nsample))
>         now = time.time()
>         for value in emgbuffer:
>             emgDataPlot = np.append(emgDataPlot, value)
>             if len(emgDataPlot) > sampleRate.value * 10:
>                emgDataPlot = np.delete(emgDataPlot, 0)
>
>         if t == 0:
>             p1.enableAutoRange('xy', False)  ## stop auto-scaling after the 
> first data set is plotted
>
>         t += 1
>
>         curve1.setData(emgDataPlot)
>         app.processEvents()
>
>         #print(t)
>         emgIsSampling(handle.value, byref(isSampling))
>
>     #p1.enableAutoRange(True, True)
>     print(pltStart - pg.ptime.time())
>
>
> What I need to do?
> Thanks.
>
> --
> You received this message because you are subscribed to the Google Groups
> "pyqtgraph" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/pyqtgraph/f3c66f2c-5c13-4b2b-b442-f55aaeda21c7%40googlegroups.com
> <https://groups.google.com/d/msgid/pyqtgraph/f3c66f2c-5c13-4b2b-b442-f55aaeda21c7%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
> For more options, visit https://groups.google.com/d/optout.
>

-- 
You received this message because you are subscribed to the Google Groups 
"pyqtgraph" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/pyqtgraph/CAD_qyJpueFRLTfQB0pNu4HyEz22tyyVcbKXL-GJrQmU6VaeVPQ%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to