{ "info": { "author": "Marco Bakera", "author_email": "marco@bakera.de", "bugtrack_url": null, "classifiers": [ "Intended Audience :: Education", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python :: 3", "Topic :: Education", "Topic :: Education :: Testing" ], "description": "\n# ioemu\n\n![screenshot](ioemu-screenshot.png)\n\nThe ioemu-project provides an emulator for input/output operations with simple electronic components like LEDs and push buttons.\n\n## Installation and Upgrade\n\nUse pip for a simple installation. For an update use `install --upgrade`. \n\n- Linux, MacOS: `python3 -m pip install ioemu`\n- Windows: `python -m pip install ioemu`\n\n## Starting the emulator\n\nFirst start the emulator by entering `ioemu` on the commandline. A Gui will show up.\n\n![screenshot](ioemu-screenshot.png)\n\nIt contains a slider for analog values between 0 and 99, threee LEDs and two push buttons from left to right.\n\n## LEDs\n\nIf the emulator is running, you can interact with it from any python program running on the same machine. First import the class `Emulator` from the `ioemu` package.\n\n\n```python\nfrom ioemu import Emulator\n```\n\nNow create an instance of the emulator and switch some LEDs on. They can be controlled by setting the `leds` attribute.\n\n\n```python\nemu = Emulator()\nemu.leds = [True, False, True]\n```\n\n## Buttons\n\n![screenshot](buttons.gif)\n\nThe emulator has two buttons. Their current state (pressed or not pressed) can be read from the attribute `buttons`. It's a bool array corresponding to the state of being pressed.\n\nThe following program lights up some LEDs depending on the button being pressed.\n\n\n```python\nemu = Emulator()\nwhile True:\n if emu.buttons[0]:\n emu.leds = [False, True, True]\n\n if emu.buttons[1]:\n emu.leds = [True, True, False]\n\n if not (emu.buttons[0] or emu.buttons[1]):\n emu.leds = [False, False, False]\n```\n\n## Analog Value (0-99)\n\nLet's look into a program that allows you to control the LEDs with the slider at the left. The current sliders value can be read from the `analog_value` attribute of the Emulator. Its value ranges from 0 to 99.\n\n![image](analog_value.gif)\n\n\n```python\nimport time\n\nemu = Emulator()\nled_on = 0\n\nwhile True:\n if 0 <= emu.analog_value < 25:\n emu.leds = [False, False, False]\n elif 25 <= emu.analog_value < 50:\n emu.leds = [True, False, False]\n elif 50 <= emu.analog_value < 75:\n emu.leds = [True, True, False]\n else:\n emu.leds = [True, True, True]\n```\n\n## Demo\n\nThere is a demo program that can be started with `python -m ioemu.demo`. It will blink the LEDs and print the current button state as well as the analog value to console.\n\n![demo](demo.gif)\n\nYou can find the source code in [demo.py](ioemu/demo.py).\n\n## Bugs\n\nIf you find any bugs or have a feature request, feel free to file a ticket at the projects [bugtracker](https://github.com/tbs1-bo/ioemu/issues/new) at github.\n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/tbs1-bo/ioemu", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "ioemu", "package_url": "https://pypi.org/project/ioemu/", "platform": "", "project_url": "https://pypi.org/project/ioemu/", "project_urls": { "Homepage": "https://github.com/tbs1-bo/ioemu" }, "release_url": "https://pypi.org/project/ioemu/0.3.0/", "requires_dist": [ "PyQt5 (>=5.11.3)" ], "requires_python": "", "summary": "IO Emulator with LEDs and buttons", "version": "0.3.0" }, "last_serial": 4548058, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "88e58910363f46bad7849b47be68f2f4", "sha256": "37afd334c95632d0457689c6724f422b19c70f500dd07d7356d1c4da2b1a0b9c" }, "downloads": -1, "filename": "ioemu-0.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "88e58910363f46bad7849b47be68f2f4", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 6058, "upload_time": "2018-11-10T10:01:03", "url": "https://files.pythonhosted.org/packages/4a/5a/36e7de18c29cb96fcf9a14f6b4eb80da366f1f2484288cf13938b6ecb644/ioemu-0.0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "36eb573d51d5c7943f3db446e1de3cdd", "sha256": "e9d85bc7f7088e4c1d0d6e56b2eb1779ce131fb2d489f13651cbb4202f11c636" }, "downloads": -1, "filename": "ioemu-0.0.1.tar.gz", "has_sig": false, "md5_digest": "36eb573d51d5c7943f3db446e1de3cdd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5621, "upload_time": "2018-11-10T10:01:05", "url": "https://files.pythonhosted.org/packages/9c/ea/3ef41384144a4b6328fa7f95b73423d0edb7a93433b91619fcd66bb4189a/ioemu-0.0.1.tar.gz" } ], "0.0.2": [ { "comment_text": "", "digests": { "md5": "84e65108778e4b29aa1cfc40031c9e97", "sha256": "40c93642caed722a266af407d3718bf39950ff42929d3fa090913c9894580745" }, "downloads": -1, "filename": "ioemu-0.0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "84e65108778e4b29aa1cfc40031c9e97", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 6079, "upload_time": "2018-11-10T10:06:22", "url": "https://files.pythonhosted.org/packages/68/a4/38d81a2d843f4e8971209d3c82c34c3d3e2fa2ea5a57aadafd2bccd98e96/ioemu-0.0.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "bb9d448967225719a1ed5c51d5ce7337", "sha256": "aaeb3e21eb7bb9b2f04a5bbd56a159ea9f60c039890dcac0de66e02f9b819d85" }, "downloads": -1, "filename": "ioemu-0.0.2.tar.gz", "has_sig": false, "md5_digest": "bb9d448967225719a1ed5c51d5ce7337", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5627, "upload_time": "2018-11-10T10:06:24", "url": "https://files.pythonhosted.org/packages/74/d0/26677b7ff705f00575ffe39f2476f8f32a64dcd0978740ba12cdd458b705/ioemu-0.0.2.tar.gz" } ], "0.0.3": [ { "comment_text": "", "digests": { "md5": "08a8e75c4e0d880e4ca183f8978412d9", "sha256": "10cea56eade8e32e942d7d2ba6ac4a7602325edbe7dcedadbb0923bde1408637" }, "downloads": -1, "filename": "ioemu-0.0.3-py3-none-any.whl", "has_sig": false, "md5_digest": "08a8e75c4e0d880e4ca183f8978412d9", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 6041, "upload_time": "2018-11-10T11:15:03", "url": "https://files.pythonhosted.org/packages/aa/33/3aed71f9289bbb93be2a15f6559f1a6bdf83638628bd2a168ac9b9465e13/ioemu-0.0.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "2d3b7572580926aa95a1688fe1ff5347", "sha256": "92c409d645ae56bf7c7e66ea3e09ebef2014ed88b2162e58d027810bbd98f0b5" }, "downloads": -1, "filename": "ioemu-0.0.3.tar.gz", "has_sig": false, "md5_digest": "2d3b7572580926aa95a1688fe1ff5347", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5595, "upload_time": "2018-11-10T11:15:06", "url": "https://files.pythonhosted.org/packages/8d/74/5b055d95aeb5420e4fd585081c35d47583dabfe98a29e1a4f139beb42bc7/ioemu-0.0.3.tar.gz" } ], "0.0.4": [ { "comment_text": "", "digests": { "md5": "550e9b851b3ed9ac269416433f3a1c4d", "sha256": "e0a0950b6c2c1d8abd128aa35e5af89f55ca7bf67bbdc7e8f2d95ea7524f9bac" }, "downloads": -1, "filename": "ioemu-0.0.4-py3-none-any.whl", "has_sig": false, "md5_digest": "550e9b851b3ed9ac269416433f3a1c4d", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 26906, "upload_time": "2018-11-11T12:26:50", "url": "https://files.pythonhosted.org/packages/23/d5/92f0a1b6a836dc79d571cbfa41f07fdcb9c4f867da65f8abdb9fa2d4f3f3/ioemu-0.0.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "cc055035e2f60fcaa360c8d7ba8c26f1", "sha256": "067d1a9177b64654339dfa39194c1bd15e892e6ab6a7511585b8fe29052b6995" }, "downloads": -1, "filename": "ioemu-0.0.4.tar.gz", "has_sig": false, "md5_digest": "cc055035e2f60fcaa360c8d7ba8c26f1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 27645, "upload_time": "2018-11-11T12:26:51", "url": "https://files.pythonhosted.org/packages/87/84/93223b946e945d41e9b1954fa0201f3b0e83b6517d75fe1d57530b2da435/ioemu-0.0.4.tar.gz" } ], "0.0.5": [ { "comment_text": "", "digests": { "md5": "332f4c329dda268ead91687fef2eb685", "sha256": "ef5dfaf9e3acfcc0f8666cd8ed6e0bc59949921e27e6a6e4005b86025bc62dad" }, "downloads": -1, "filename": "ioemu-0.0.5-py3-none-any.whl", "has_sig": false, "md5_digest": "332f4c329dda268ead91687fef2eb685", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 27719, "upload_time": "2018-11-11T12:29:38", "url": "https://files.pythonhosted.org/packages/2a/eb/26083acf9cd76e11ef6ad878f051a55e9addba3ff69dd0b0bef08f1d7da1/ioemu-0.0.5-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "36b4ae33f9fcf50d0cb97e5ab4a830fd", "sha256": "79e0efb96357a0241f5fb1d9a856503cf549c1afc33f899b00a898cd2bc51800" }, "downloads": -1, "filename": "ioemu-0.0.5.tar.gz", "has_sig": false, "md5_digest": "36b4ae33f9fcf50d0cb97e5ab4a830fd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 27650, "upload_time": "2018-11-11T12:29:39", "url": "https://files.pythonhosted.org/packages/c6/b1/531b6603587c6ae21e8a7ec9a657e334afdbfe6a03c53b8f5e0fd08cc80d/ioemu-0.0.5.tar.gz" } ], "0.1.0": [ { "comment_text": "", "digests": { "md5": "e971a366e22d394af2f6cedbd8fbb6f1", "sha256": "c77af2b3b1a2bd15d7109e0b3a7c8d126e0eed9d844ce6dc08674d26e79bf4d8" }, "downloads": -1, "filename": "ioemu-0.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "e971a366e22d394af2f6cedbd8fbb6f1", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 29731, "upload_time": "2018-11-16T21:18:04", "url": "https://files.pythonhosted.org/packages/ca/97/8b35581d1fece4221ba083c46e53d3b3e05c356751dbc3c75d80a4449a38/ioemu-0.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8862925f00cccb8928d9dd96fa4198cd", "sha256": "9fe6e02874031f4783d805e59899c265db661fb7b6efadc7b520b30ca6d3291c" }, "downloads": -1, "filename": "ioemu-0.1.0.tar.gz", "has_sig": false, "md5_digest": "8862925f00cccb8928d9dd96fa4198cd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 29590, "upload_time": "2018-11-16T21:18:05", "url": "https://files.pythonhosted.org/packages/81/40/70db02bc394da2c810b9c5eacca8b731df6293700ba520cf1c4c15527cea/ioemu-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "68d86622df287d52473c08bef0daa049", "sha256": "2b4c507d27ef04b9aaffa8a1db38478397dd25a4aae4aa69b36ef385a16762b6" }, "downloads": -1, "filename": "ioemu-0.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "68d86622df287d52473c08bef0daa049", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 29777, "upload_time": "2018-11-17T06:03:47", "url": "https://files.pythonhosted.org/packages/fa/54/f511cf0d3a7ac99f075af442f66eb2c63bdf33824962b479e7209f6543db/ioemu-0.1.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b27853ad99bad82200eb214837e24f30", "sha256": "f3a42fb2f4aaf5de267d7074cc13b5472902e957c68f8965e2051a12f5c71047" }, "downloads": -1, "filename": "ioemu-0.1.1.tar.gz", "has_sig": false, "md5_digest": "b27853ad99bad82200eb214837e24f30", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 29684, "upload_time": "2018-11-17T06:03:48", "url": "https://files.pythonhosted.org/packages/fb/c7/60ec3f326caea67495ec22ad28ccf45aa34c526a3b8dc73f735db1d88c71/ioemu-0.1.1.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "77fed51eff566548b3f51b9a2ab6199f", "sha256": "b5d6b010cd9f5fa9dbff0323e394a6fbe94b1d720adc31ee0772fff3b3a318ea" }, "downloads": -1, "filename": "ioemu-0.1.2-py3-none-any.whl", "has_sig": false, "md5_digest": "77fed51eff566548b3f51b9a2ab6199f", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 30293, "upload_time": "2018-11-17T06:25:37", "url": "https://files.pythonhosted.org/packages/03/0b/1677e47ef5441189a7f7add00b43dc4312ae3b38604d72f4701623e02bb0/ioemu-0.1.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ed8bb19698a52d29d8935e74284e74cc", "sha256": "e4d63771dc80ad50fe5c556648519088d084402705b54e679798d6688ade7747" }, "downloads": -1, "filename": "ioemu-0.1.2.tar.gz", "has_sig": false, "md5_digest": "ed8bb19698a52d29d8935e74284e74cc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 30173, "upload_time": "2018-11-17T06:25:38", "url": "https://files.pythonhosted.org/packages/a4/95/7b0cf0216c6baa6b7e7c39385b471241c798ea9bca4f5e79f37817a428da/ioemu-0.1.2.tar.gz" } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "831a73ea5b609be47f81977a0833785c", "sha256": "2a0b6b1836a17e41f9d2b633dc6f686cf6089ec769f72ae57a510fbad1fc6071" }, "downloads": -1, "filename": "ioemu-0.1.3-py3-none-any.whl", "has_sig": false, "md5_digest": "831a73ea5b609be47f81977a0833785c", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 30499, "upload_time": "2018-11-19T14:07:39", "url": "https://files.pythonhosted.org/packages/2f/94/db9adc53983903814c4ffcffd072a42f83c80b7ff5eb81272132535c2327/ioemu-0.1.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ae5ef8d5c428bb7f2d88e4cafd772ad3", "sha256": "7691dc98fe93dfea7cc437e8256c2f3386cdb82c1e640d2d754d543068419dad" }, "downloads": -1, "filename": "ioemu-0.1.3.tar.gz", "has_sig": false, "md5_digest": "ae5ef8d5c428bb7f2d88e4cafd772ad3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 30570, "upload_time": "2018-11-19T14:07:41", "url": "https://files.pythonhosted.org/packages/75/2a/e40d735daab04fd201c9db87844775d60f3baf7e4ca6878cfcc461cb66cb/ioemu-0.1.3.tar.gz" } ], "0.1.4": [ { "comment_text": "", "digests": { "md5": "cd81b6327ce616ecb1d77e3c470f0a33", "sha256": "b1f92156b2ed95f6f2584ea0a98e1a5d3096806b2ddc7da3dbc0d7604c95efb2" }, "downloads": -1, "filename": "ioemu-0.1.4-py3-none-any.whl", "has_sig": false, "md5_digest": "cd81b6327ce616ecb1d77e3c470f0a33", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 30534, "upload_time": "2018-11-19T14:14:47", "url": "https://files.pythonhosted.org/packages/82/f0/7cc0391b1b27ab6afc83371ba093b52c5d31602cd90621cf1a79d7a2fdd4/ioemu-0.1.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "653fdd216f4a53f59ec6464816a6d9ee", "sha256": "f74d2abc9b8e0d93beaed0efc95689a28f2955fe39aee116f05371b30f73b148" }, "downloads": -1, "filename": "ioemu-0.1.4.tar.gz", "has_sig": false, "md5_digest": "653fdd216f4a53f59ec6464816a6d9ee", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 30635, "upload_time": "2018-11-19T14:14:49", "url": "https://files.pythonhosted.org/packages/3d/20/b82cf1e553924ca9ae6358cf83adb243614ef47a6d95bf420ed0b2fd4c58/ioemu-0.1.4.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "7b74614e4cbb753a4b2ae3e074f409c1", "sha256": "309accbbcf92a7350e9ae5598d8d651fb7d9113fdf5b96e216b5a34cbdc29840" }, "downloads": -1, "filename": "ioemu-0.2.0-py3-none-any.whl", "has_sig": false, "md5_digest": "7b74614e4cbb753a4b2ae3e074f409c1", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 30680, "upload_time": "2018-11-21T14:37:45", "url": "https://files.pythonhosted.org/packages/b1/4b/09af4850181f39bf7d07dc6a29cc367740eee18959d47f78dd1125a824b7/ioemu-0.2.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "df62ffb8c99cad0989fafb4edec7ba62", "sha256": "2416ae9127c0d72bfb3a256affb6ce396be9ec2ffb0640dffbe729e27f6a92cf" }, "downloads": -1, "filename": "ioemu-0.2.0.tar.gz", "has_sig": false, "md5_digest": "df62ffb8c99cad0989fafb4edec7ba62", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 30748, "upload_time": "2018-11-21T14:37:47", "url": "https://files.pythonhosted.org/packages/99/2e/5fb3ca626acd3be9f7aca48b93c2573e6f369528e002a1c7ff5d4c39b006/ioemu-0.2.0.tar.gz" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "73a1bbff5fa0d3ea624cb7d53240b586", "sha256": "0991a756025e49b709b5e5fe9c2339fbe1e832449004c3711cb579bae056a6b4" }, "downloads": -1, "filename": "ioemu-0.3.0-py3-none-any.whl", "has_sig": false, "md5_digest": "73a1bbff5fa0d3ea624cb7d53240b586", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 31009, "upload_time": "2018-11-30T17:58:58", "url": "https://files.pythonhosted.org/packages/c8/19/c0b522c5ffb60b2bc3430b066d84222e8d059288df32a65acdd4cb5bbc83/ioemu-0.3.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5dc4a58088474969a82b12c690b0b046", "sha256": "3165aa1d1c43f2074288d6efea289ed9c5dfd9c24bd21b88d12e5e6af35aaf8a" }, "downloads": -1, "filename": "ioemu-0.3.0.tar.gz", "has_sig": false, "md5_digest": "5dc4a58088474969a82b12c690b0b046", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 31107, "upload_time": "2018-11-30T17:59:00", "url": "https://files.pythonhosted.org/packages/2e/e7/6b55effe56120e4864318001468437afa72528e4f7ad7a9db62b9bffb302/ioemu-0.3.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "73a1bbff5fa0d3ea624cb7d53240b586", "sha256": "0991a756025e49b709b5e5fe9c2339fbe1e832449004c3711cb579bae056a6b4" }, "downloads": -1, "filename": "ioemu-0.3.0-py3-none-any.whl", "has_sig": false, "md5_digest": "73a1bbff5fa0d3ea624cb7d53240b586", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 31009, "upload_time": "2018-11-30T17:58:58", "url": "https://files.pythonhosted.org/packages/c8/19/c0b522c5ffb60b2bc3430b066d84222e8d059288df32a65acdd4cb5bbc83/ioemu-0.3.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5dc4a58088474969a82b12c690b0b046", "sha256": "3165aa1d1c43f2074288d6efea289ed9c5dfd9c24bd21b88d12e5e6af35aaf8a" }, "downloads": -1, "filename": "ioemu-0.3.0.tar.gz", "has_sig": false, "md5_digest": "5dc4a58088474969a82b12c690b0b046", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 31107, "upload_time": "2018-11-30T17:59:00", "url": "https://files.pythonhosted.org/packages/2e/e7/6b55effe56120e4864318001468437afa72528e4f7ad7a9db62b9bffb302/ioemu-0.3.0.tar.gz" } ] }