{"id":22143949,"url":"https://github.com/dpshkr/pymdo","last_synced_at":"2025-08-01T03:44:13.828Z","repository":{"id":204451701,"uuid":"711889562","full_name":"dpshkr/PyMDO","owner":"dpshkr","description":"Tektronix MDO3 series oscilloscope control in Python","archived":false,"fork":false,"pushed_at":"2023-10-30T12:12:08.000Z","size":7,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-06-01T17:03:47.833Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dpshkr.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2023-10-30T11:33:24.000Z","updated_at":"2023-10-30T11:35:47.000Z","dependencies_parsed_at":null,"dependency_job_id":"3f56bc3c-2e3e-4f7f-b404-c463c01f9b77","html_url":"https://github.com/dpshkr/PyMDO","commit_stats":null,"previous_names":["dpshkr/pymdo"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/dpshkr/PyMDO","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dpshkr%2FPyMDO","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dpshkr%2FPyMDO/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dpshkr%2FPyMDO/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dpshkr%2FPyMDO/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dpshkr","download_url":"https://codeload.github.com/dpshkr/PyMDO/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dpshkr%2FPyMDO/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":268166277,"owners_count":24206428,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-01T02:00:08.611Z","response_time":67,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-12-01T22:17:38.214Z","updated_at":"2025-08-01T03:44:13.794Z","avatar_url":"https://github.com/dpshkr.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# PyMDO\n\nTektronix MDO3 series oscilloscope control in Python\n\n## Introduction\n\nThere are two classes provided - `SyncMDO3` and `AsyncMDO3`.\nThe `SyncMDO3` is Synchronous, while the `AsyncMDO3` is asynchronous.\nThe former is easier to use; however, it is relatively slow compared to the latter. \nAlso, in complex situations, \nthe asynchronous version is more suitable as it is possible to control \nmany instruments concurrently using Python's `async` and `await` paradigms.\n\n## Usage - Synchronous\n\nFirst, instantiate the oscilloscope class.\n\n```python\nm = SyncMDO3(ipaddress: str, portnumber: int)\n```\n\n`ipaddress` is the IP address of the oscilloscope, while port number is the Socket server port number.\nFor example, if the scope has an IP address 10.33.20.166 at port 4000, \ninstantiation is done by `m = SyncMDO3(\"10.33.20.166\", 5000)`.\n\nTo send commands to the oscilloscope, there are two methods - `write` and `query`.\nThe `write` method just writes the command without waiting for the reply from the oscilloscope.\nThe `query` method writes the command to the scope and waits for it to send a response.\nUse these methods carefully. The oscilloscope does not send any response to many commands.\nIf `query` method is used to send such commands, the call will block as the method waits for the response.\nAs a rule of thumb, use `query` method when the command ends in a question mark (?); otherwise, use `write`.\nFor example `query` method is required for `*idn?`.\n\n```python\nm.write(command: str) # Write a command\nm.query(command: str) -\u003e str # Write a command and then wait for response\n```\nFor example, to query the identity of the instrument, `idn = m.query(\"*idn?\")`\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdpshkr%2Fpymdo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdpshkr%2Fpymdo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdpshkr%2Fpymdo/lists"}