{"id":39236521,"url":"https://github.com/pixsper/posistagedotnet","last_synced_at":"2026-01-17T23:47:32.510Z","repository":{"id":39574572,"uuid":"49133997","full_name":"pixsper/posistagedotnet","owner":"pixsper","description":"C# implementation of the PosiStageNet protocol for network transport of positional data","archived":false,"fork":false,"pushed_at":"2022-03-20T22:44:27.000Z","size":2632,"stargazers_count":20,"open_issues_count":1,"forks_count":5,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-08-01T05:27:06.020Z","etag":null,"topics":["posistagenet-protocol","protocol"],"latest_commit_sha":null,"homepage":null,"language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"lgpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pixsper.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}},"created_at":"2016-01-06T12:31:54.000Z","updated_at":"2024-12-03T07:11:29.000Z","dependencies_parsed_at":"2022-08-29T10:50:28.477Z","dependency_job_id":null,"html_url":"https://github.com/pixsper/posistagedotnet","commit_stats":null,"previous_names":["davidbutlerdesign/posistagedotnet"],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/pixsper/posistagedotnet","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pixsper%2Fposistagedotnet","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pixsper%2Fposistagedotnet/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pixsper%2Fposistagedotnet/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pixsper%2Fposistagedotnet/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pixsper","download_url":"https://codeload.github.com/pixsper/posistagedotnet/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pixsper%2Fposistagedotnet/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28522316,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-17T22:11:28.393Z","status":"ssl_error","status_checked_at":"2026-01-17T22:11:27.841Z","response_time":85,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["posistagenet-protocol","protocol"],"created_at":"2026-01-17T23:47:31.921Z","updated_at":"2026-01-17T23:47:32.500Z","avatar_url":"https://github.com/pixsper.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cimg src=\"/resources/PosiStageDotNet-Alpha.png\" width=\"256\" alt=\"PosiStageDotNet\"\u003e\nPosiStageDotNet is a C# library for implementing the PosiStageNet protocol in any  project compatible with .Net 4.5 or .Net Platform Standard 1.3. The protocol is used to pass position, speed, orientation and other automation data between entertainment control systems, for example, between an automation controller and a lighting desk or media server.\n\n\u003cimg src=\"/resources/psn%20logos/PSN_Black.svg\" width=\"128\" alt=\"PSN Logo\"\u003e\n\nSee \u003chttp://www.posistage.net/\u003e for more information on PosiStageNet.\n\n[![Build status](https://ci.appveyor.com/api/projects/status/wmxp2dhtlv09yey3?svg=true)](https://ci.appveyor.com/project/Pixsper/posistagedotnet)\n\n## NuGet\n\n![Nuget](https://img.shields.io/nuget/v/DBDesign.PosiStageDotNet?logo=nuget)\n\nThe library is available from NuGet.org as [DBDesign.PosiStageDotNet](https://www.nuget.org/packages/DBDesign.PosiStageDotNet).\n\n## License\n\nThe library is [LGPL 3.0](http://www.gnu.org/licenses/lgpl-3.0.en.html) licensed, allowing use in non-GPL-licensed projects. Any modifications to the source however must be given back to the community under the same license.\n\n\n\n## Simple Examples\n### Sending Data\n```C#\n// Set this to the IP of the network interface you want to send PSN packets on\nvar adapterIp = IPAddress.Parse(\"10.0.0.1\");\n\nvar psnServer = new PsnServer(\"Test PSN Server\", adapterIp);\n\nvar trackers = new []\n{\n    new PsnTracker(0, \"Tracker 0\", \n        position: Tuple.Create(0f, 0f, 0f), \n        speed: Tuple.Create(0f, 0f, 0f), \n        orientation: Tuple.Create(0f, 0f, 0f)),\n    new PsnTracker(1, \"Tracker 1\", \n        position: Tuple.Create(10.4f, 0f, 0f), \n        speed: Tuple.Create(1.23f, 0f, 0f), \n        orientation: Tuple.Create(0f, 85.34f, 0f)),\n    new PsnTracker(2, \"Tracker 2\", \n        position: Tuple.Create(5.232f, 2.654f, 13.765f), \n        speed: Tuple.Create(1f, 3f, 0f), \n        orientation: Tuple.Create(23.3f, 43.3f, 76.2f))\n};\n\npsnServer.SetTrackers(trackers);\n\npsnServer.StartSending();\n\n// Take some more readings...\n\n// PsnTrackers are immutable, use the 'with' methods to create a copy with mutated values\nvar tracker2Update = trackers[2].WithPosition(Tuple.Create(6.345f, 2.23f, 13.098f));\n\n// We can update values for individual trackers, replacing any tracker data with the same index\npsnServer.UpdateTrackers(tracker2Update);\n\n// When you're finished...\npsnServer.StopSending();\n\n// Don't forget to dispose!\npsnServer.Dispose();\n```\n\n### Receiving Data\n```C#\n// Set this to the IP of the network interface you want to listen for PSN packets on\nvar adapterIp = IPAddress.Parse(\"10.0.0.1\");\n\nvar psnClient = new PsnClient(adapterIp);\n\npsnClient.TrackersUpdated += (s, e) =\u003e\n{\n    foreach (var t in e.Values)\n        Console.WriteLine(t);\n};\n\npsnClient.StartListening();\n\n// Do something with the tracker data\n\n// When you're finished...\npsnClient.StopListening();\n\n// Don't forget to dispose!\npsnClient.Dispose();\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpixsper%2Fposistagedotnet","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpixsper%2Fposistagedotnet","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpixsper%2Fposistagedotnet/lists"}