{ "info": { "author": "Dilawar Singh", "author_email": "dilawars@ncbs.res.in", "bugtrack_url": null, "classifiers": [], "description": "[![PyPI version](https://badge.fury.io/py/SerialScope.svg)](https://badge.fury.io/py/SerialScope) ![](https://img.shields.io/pypi/pyversions/serialscope.svg)\n\nA serial port dual-channel oscilloscope. __Python 3 only__. \n\n![Screenshot (v0.1.3)](https://user-images.githubusercontent.com/895681/59994995-83506400-9673-11e9-861a-eb4f2984905e.png)\n\n $ pip install SerialScope --user # just for you\nor,\n\n $ sudo -E pip install SerialScope # for all users\n\nAfter installation, launch it. \n\n $ serialscope\n \nPath `~/.local/bin` should be in your `PATH` environment variable.\n\nor,\n \n $ python3 -m SerialScope \n \n\nThe default baud rate is `115200`. The oscilloscope will automatically \nfind any serial port which has arduino connected to it.\n\n__TODO/FIXME__ You can change these values from command line\n\n```\nusage: serialscope [-h] [--port PORT] [--baudrate BAUDRATE]\n\nArduino NeuroScope.\n\noptional arguments:\n -h, --help show this help message and exit\n --port PORT, -p PORT Serial port.\n --baudrate BAUDRATE, -B BAUDRATE\n Baudrate of Arduino board.\n\n```\n\n## Dependencies\n\n- pyserial\n- pysimplegui \n- screeninfo (optional)\n\n# How it works\n\nThis oscilloscope has two channels. It assumes that 1 byte of data is sent\nfor each channel. If you are using arduino's analog pins to read data, then \nyour resolution would be `5/255` volts.\n\n## Arduino board\n\nFunction `analogRead` returns 10 bit value i.e., between 0 and 1023. You should\nscale it to 255, cast it to `char` before writing to serial port. This is for efficiency.\nSending 10 bits data requires sending 2 bytes. For 2 channels, this would slow \ndown the sampling rate by 4X compared to when only 1 byte is sent per channel.\n\nYou can use following snippets in your sketch.\n\nMake sure that your arduino is set to use maximum possible baud-rate. I have\nused 115200 baud rate.,\n\n```\n// Two critical functions.\nchar intToChar( int val)\n{\n // analogRead is 10 bits. Change it to 8 bits.\n char x = (char) (255.0 * val/1023.0);\n return x;\n}\n\nvoid write_data_line( )\n{\n // channel A is on pin A0 and channel B is on A1\n char a = intToChar(analogRead(A0));\n char b = intToChar(analogRead(A1));\n Serial.print(a);\n Serial.print(b);\n Serial.flush();\n}\n```\n\nA sketch is available in `SerialScopeArduino/` directory. Open it in your\narduino IDE and upload to your Arduino board.", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://github.com/dilawar/SerialScope", "keywords": "", "license": "GPLv3", "maintainer": "", "maintainer_email": "", "name": "SerialScope", "package_url": "https://pypi.org/project/SerialScope/", "platform": "", "project_url": "https://pypi.org/project/SerialScope/", "project_urls": { "Homepage": "http://github.com/dilawar/SerialScope" }, "release_url": "https://pypi.org/project/SerialScope/0.2.2/", "requires_dist": null, "requires_python": ">=3.5", "summary": "A serial-port based oscilloscope", "version": "0.2.2" }, "last_serial": 5455650, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "66622d91e2e04421c037162391e60b1a", "sha256": "ae69fd9d4937e0f155c6878ca9a4e28833ee1a6735a714ac0139f142290386e8" }, "downloads": -1, "filename": "SerialScope-0.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "66622d91e2e04421c037162391e60b1a", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 22559, "upload_time": "2019-06-20T06:35:17", "url": "https://files.pythonhosted.org/packages/d3/dc/68addfa6b9fe63237f998c4c8ecee358734a894a71d5147bbe9bbf08271a/SerialScope-0.0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "36c03173a7194a8a15f56374d7aad72f", "sha256": "b760c64122e46b8d16fa642e03088afa58984ecf3b103d419a42016cafe4e8e5" }, "downloads": -1, "filename": "SerialScope-0.0.1.tar.gz", "has_sig": false, "md5_digest": "36c03173a7194a8a15f56374d7aad72f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7572, "upload_time": "2019-06-20T06:35:20", "url": "https://files.pythonhosted.org/packages/aa/42/9c59ffc9439efd0ad3c01fa67e7f49080f655d4a220c8d71ace07f3dc862/SerialScope-0.0.1.tar.gz" } ], "0.0.3": [ { "comment_text": "", "digests": { "md5": "58d0e1d8026c0fcfa733d7ca33f78e6a", "sha256": "58b074a4ab99c6c0719aef0cd6fdb9f615b76b7de181646fa50239d28dde21dc" }, "downloads": -1, "filename": "SerialScope-0.0.3.tar.gz", "has_sig": false, "md5_digest": "58d0e1d8026c0fcfa733d7ca33f78e6a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7665, "upload_time": "2019-06-20T07:05:03", "url": "https://files.pythonhosted.org/packages/76/46/431e067ca4cc02528987d8d0a7d67ece0599901f3bc5cad38e53c81cd998/SerialScope-0.0.3.tar.gz" } ], "0.0.4": [ { "comment_text": "", "digests": { "md5": "40207771b063807bc972355823861bd0", "sha256": "181ca515c95d78f308e1a8c69448cca5edc13034324780f71311340e6ab70bd0" }, "downloads": -1, "filename": "SerialScope-0.0.4.tar.gz", "has_sig": false, "md5_digest": "40207771b063807bc972355823861bd0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 85781, "upload_time": "2019-06-22T02:17:21", "url": "https://files.pythonhosted.org/packages/d9/ad/fe73c429e8df011442fc7e0dfa0555eb72750da1e4aae7b7472a8af9ac35/SerialScope-0.0.4.tar.gz" } ], "0.0.5": [ { "comment_text": "", "digests": { "md5": "1586427c2d60416a7ee8bb6f3c3c2848", "sha256": "961c0419d52eefa2da529e6cd9764aade0880cd24d2fb4f2c3aaf514a1a50822" }, "downloads": -1, "filename": "SerialScope-0.0.5.tar.gz", "has_sig": false, "md5_digest": "1586427c2d60416a7ee8bb6f3c3c2848", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 85820, "upload_time": "2019-06-22T02:26:00", "url": "https://files.pythonhosted.org/packages/2d/bb/6167545fd5d16d9ce60d9bbb29a0f17007bc05b974c3fccdce0d14409fa4/SerialScope-0.0.5.tar.gz" } ], "0.0.8": [ { "comment_text": "", "digests": { "md5": "081699dcab214b28d765ae8c705c287c", "sha256": "d4d1d0892b9c2fa1ec63bbdada6456bc887b84de7d427340b97b9149122594e3" }, "downloads": -1, "filename": "SerialScope-0.0.8.tar.gz", "has_sig": false, "md5_digest": "081699dcab214b28d765ae8c705c287c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 85756, "upload_time": "2019-06-22T17:53:45", "url": "https://files.pythonhosted.org/packages/44/dd/78c9ebbf8636855013e553e843119c06717c72ec253f30efb51f0d7e3387/SerialScope-0.0.8.tar.gz" } ], "0.1.0": [ { "comment_text": "", "digests": { "md5": "b35808cf995ef51f70b32c4a2a1c27b8", "sha256": "ad4a0954fe7df96f8562443ccb82ff98d8285fade622590206768da34858bac3" }, "downloads": -1, "filename": "SerialScope-0.1.0.tar.gz", "has_sig": false, "md5_digest": "b35808cf995ef51f70b32c4a2a1c27b8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 85693, "upload_time": "2019-06-22T20:19:11", "url": "https://files.pythonhosted.org/packages/f1/f3/227c44b29c5b652b023dcd4f4afee522cbec20444e8d08a14eb01d038117/SerialScope-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "f55e007c6e6441d6d49fe17ec375590e", "sha256": "41a826d7cb720a55571a0f86539ec23b0eb89bc4018b96eb82ca7f4fc9b7ff17" }, "downloads": -1, "filename": "SerialScope-0.1.1.tar.gz", "has_sig": false, "md5_digest": "f55e007c6e6441d6d49fe17ec375590e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 85708, "upload_time": "2019-06-23T08:22:05", "url": "https://files.pythonhosted.org/packages/b4/d2/ee98b1b5bf7910e15df98153e58fe7aa1e8a3b352b9c8515324beb1e6839/SerialScope-0.1.1.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "471055499cf927abfbe74d1e4ac6de96", "sha256": "0a7ae4f991a04790b98eaa7c68158c9b32b3b675095cd05d3fe914a6ba5d8e42" }, "downloads": -1, "filename": "SerialScope-0.1.2.tar.gz", "has_sig": false, "md5_digest": "471055499cf927abfbe74d1e4ac6de96", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 85947, "upload_time": "2019-06-23T08:39:47", "url": "https://files.pythonhosted.org/packages/11/48/7a7afdb0dd2aa00de332b1d3d6c4e54dc4aca19786b63a00162c2f929367/SerialScope-0.1.2.tar.gz" } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "42677c692729c822846d2c5d0ad1d763", "sha256": "bbe02585451a1f50f4c34e9f3dc20ec277e57df62d894d3aa82f024576432924" }, "downloads": -1, "filename": "SerialScope-0.1.3.tar.gz", "has_sig": false, "md5_digest": "42677c692729c822846d2c5d0ad1d763", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 85927, "upload_time": "2019-06-24T05:05:41", "url": "https://files.pythonhosted.org/packages/df/86/822e264013d30a596409cef5e12ddd0c4a03d17377a665382dff7ce6d278/SerialScope-0.1.3.tar.gz" } ], "0.1.4": [ { "comment_text": "", "digests": { "md5": "67dcf3b999018fc83c9b419fc95618c0", "sha256": "c4560ffd88e63dd9417d89276023cd011eb86951f1434905834046d50620ba7b" }, "downloads": -1, "filename": "SerialScope-0.1.4.tar.gz", "has_sig": false, "md5_digest": "67dcf3b999018fc83c9b419fc95618c0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 86056, "upload_time": "2019-06-24T06:26:09", "url": "https://files.pythonhosted.org/packages/c7/ab/d29c5e43ee3c12bf478825b925fde1ae46dc8ff7610484ee0f47ca192f5b/SerialScope-0.1.4.tar.gz" } ], "0.1.5": [ { "comment_text": "", "digests": { "md5": "8fcef0d7f908f1f936a461467b61ed67", "sha256": "9d96a4c7455058bd773753500a87ea7099444914099ab965d34cc7bae78522cd" }, "downloads": -1, "filename": "SerialScope-0.1.5.tar.gz", "has_sig": false, "md5_digest": "8fcef0d7f908f1f936a461467b61ed67", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 86631, "upload_time": "2019-06-24T10:47:54", "url": "https://files.pythonhosted.org/packages/cf/19/68d1785a0b6fbc8942ee307c574f69f234ece00146a192e4246a5d73ee1b/SerialScope-0.1.5.tar.gz" } ], "0.1.6": [ { "comment_text": "", "digests": { "md5": "00cc84c7853914693bfa7dae314fa2e9", "sha256": "0eca2fa089f8640f32c2c1df319c328867833c8e48beb000bc4348ac20661efc" }, "downloads": -1, "filename": "SerialScope-0.1.6.tar.gz", "has_sig": false, "md5_digest": "00cc84c7853914693bfa7dae314fa2e9", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 86628, "upload_time": "2019-06-27T04:12:34", "url": "https://files.pythonhosted.org/packages/9a/e6/312d4da16b84b6f21574849e024ceff4a1e120939fed030f7325269aad9b/SerialScope-0.1.6.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "d4727424f298d2f51c301954c35680d0", "sha256": "136fddc56907b305d0593fef36c459ff0923ec24010254b65533438296e98a1d" }, "downloads": -1, "filename": "SerialScope-0.2.0.tar.gz", "has_sig": false, "md5_digest": "d4727424f298d2f51c301954c35680d0", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 86630, "upload_time": "2019-06-27T04:47:44", "url": "https://files.pythonhosted.org/packages/a6/11/0865c95c33e770b41a66ea3ee3ac52e9682da551e65f03e1dba9e34d39a5/SerialScope-0.2.0.tar.gz" } ], "0.2.0rc1": [ { "comment_text": "", "digests": { "md5": "fd3aee19ad211f5a12b1d16dc59c86f3", "sha256": "e0f4f7f6e75db233d37de33ee9e8a80332d4c0f5d2a9bf3b2b4bb48ef0be1b2d" }, "downloads": -1, "filename": "SerialScope-0.2.0rc1.tar.gz", "has_sig": false, "md5_digest": "fd3aee19ad211f5a12b1d16dc59c86f3", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 86651, "upload_time": "2019-06-27T04:28:44", "url": "https://files.pythonhosted.org/packages/b5/2b/c1ebccc277786ff07c0a18b63fb2b5bab6307737015bb11317fe36b2b4b6/SerialScope-0.2.0rc1.tar.gz" } ], "0.2.0rc2": [ { "comment_text": "", "digests": { "md5": "78a697d786748ce452cd4575039423a5", "sha256": "74f1df3a89ecae9d72a9e896a9662a24c25897babfdb30f66af4897da726582f" }, "downloads": -1, "filename": "SerialScope-0.2.0rc2.tar.gz", "has_sig": false, "md5_digest": "78a697d786748ce452cd4575039423a5", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 86648, "upload_time": "2019-06-27T04:45:52", "url": "https://files.pythonhosted.org/packages/39/c5/3f459be7606140b77d64839e9db471637b80c03f34a67410fe8b9d9cbec0/SerialScope-0.2.0rc2.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "63e0410c37bb4f4bbf497e6e7b85f8c3", "sha256": "69596006cac0e1bab056b0b11cba8c2af807d0356938181c15143f94a5df6852" }, "downloads": -1, "filename": "SerialScope-0.2.1.tar.gz", "has_sig": false, "md5_digest": "63e0410c37bb4f4bbf497e6e7b85f8c3", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 86551, "upload_time": "2019-06-27T05:45:56", "url": "https://files.pythonhosted.org/packages/6e/59/392a8a976b2b606414dc091a84e4aaaaf5421a6f9a4ff31bf3b6252a4cca/SerialScope-0.2.1.tar.gz" } ], "0.2.2": [ { "comment_text": "", "digests": { "md5": "ec6d3936e0041b5fc9064f683db03c46", "sha256": "d601d8863d090ddf9e223131f62bc177b02e641e8ddaabc8760c1261c21ac556" }, "downloads": -1, "filename": "SerialScope-0.2.2.tar.gz", "has_sig": false, "md5_digest": "ec6d3936e0041b5fc9064f683db03c46", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 86809, "upload_time": "2019-06-27T08:01:57", "url": "https://files.pythonhosted.org/packages/64/6e/aa3b057eca81aa048c554263457959f8f2b2f5d59b859284b490be857153/SerialScope-0.2.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "ec6d3936e0041b5fc9064f683db03c46", "sha256": "d601d8863d090ddf9e223131f62bc177b02e641e8ddaabc8760c1261c21ac556" }, "downloads": -1, "filename": "SerialScope-0.2.2.tar.gz", "has_sig": false, "md5_digest": "ec6d3936e0041b5fc9064f683db03c46", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 86809, "upload_time": "2019-06-27T08:01:57", "url": "https://files.pythonhosted.org/packages/64/6e/aa3b057eca81aa048c554263457959f8f2b2f5d59b859284b490be857153/SerialScope-0.2.2.tar.gz" } ] }