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

streaming on 5000a #59

Open
nanoballs opened this issue Oct 12, 2016 · 4 comments
Open

streaming on 5000a #59

nanoballs opened this issue Oct 12, 2016 · 4 comments

Comments

@nanoballs
Copy link

HI i am quite new using picoscope with python... i cant find any streaming function.. As am trying to get a continous stream of data (some hours) from a channel at 16bit resolution and 5Ms/s i wold like not to have it in block mode but to be able to analize in real time. Has anyone something useful for it?
thanks!!

@DeadBugEngineering
Copy link

Hi, you might want to check out the "experiment" branch of the user morgatron. He implemented the streaming functionality and it seems to work fine on a P5444B. I'm not sure whether analyzing in real time and using a daq with a USB-interface go well together, tho.

@nanoballs
Copy link
Author

thanks! il have a look to it!

@hmaarrfk
Copy link
Collaborator

Streaming was complicated because it required knowledge of how python's garbage collection works (at least I think so).

My worry was that you would set a buffer to stream to, then delete it. That would cause a segfault eventually. The other issue was: maybe you didn't want to use numpy. You would probably want to be super efficient if you are streaming data. Therefore, I decided to leave it to users to write the streaming code themselves.

If you find something that works, please submit a pull request. Collin and I do check this repo rather often.

@morgatron
Copy link
Contributor

Oops, I just left a comment on issue #23 . Probably would've been better here. In short, I was running streaming and bulk data quite a lot a year or so ago, and based on that experience python makes it a bit harder to cause a segfault than you might think, and there's certainly ways to make it harder still. Not that my repository mentioned above is a great example.

A couple of other comments: as for not wanting to use numpy, I guess that's valid as not everyone has it installed- but then, if you're wanting do deal with large arrays in python you probably use numpy already? Otherwise I guess it'd probably work to use a builtin python 'array' object instead. As for speed, I found the major problem isn't the streaming itself, it's all the processing/visualising you inevitably want to do to which takes up CPU time and causes the streaming to skip. Ideally one runs the acquisition in a seperate process from the analysis/plotting and everything is good because the acquisition runs on it's own core.. I doubt one would want to add multiprocessing in picopython though.

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

4 participants