{"adoption": {"forks": 271, "observed_at": "2026-08-28T04:05:16.206376+00:00", "stars": 1645}, "canonical_url": "https://ross.abutalabs.com/products/serialtest", "card": {"archived": false, "artifact_type": "application", "description": "Data transceiver(monitor)/realtime plotter/shortcut/file transceiver over serial port/Bluetooth/network on Windows/Linux/Android/macOS | 跨平台串口/蓝牙/网络调试助手，带数据收发/实时绘图/快捷发送/文件收发面板，可在PC和Android设备上使用", "domain": ["developer-tools", "hardware", "cross-platform", "embedded-systems"], "enriched": true, "function": ["gui", "data-visualization", "developer-tools", "file-upload"], "health_score": 26, "homepage": null, "language": "C++", "license": "GPL-3.0", "license_family": "copyleft", "maturity": "active", "member_repos": ["wh201906/SerialTest"], "name": "wh201906/SerialTest", "platform": ["windows", "cross-platform"], "pushed_at": "2024-06-17T11:33:30+00:00", "repo": "wh201906/SerialTest", "stars": 1645, "tags": ["serial-port", "bluetooth-spp", "bluetooth-le", "tcp", "udp", "realtime-plotting", "qt5", "debugging-tool", "embedded-debugging", "linux", "macos", "android"], "topics": ["qt", "qt5", "serialport", "qcustomplot", "android", "plot", "bluetooth", "bluetooth-le", "tcp", "udp", "network", "f-droid", "serial", "linux", "macos", "serial-monitor", "windows"], "urls": [], "use_cases": ["debug serial communication with embedded devices", "plot realtime sensor data over serial port", "send and receive data over bluetooth SPP or BLE", "test TCP and UDP network connections", "transfer files over serial or bluetooth", "monitor and control DTR/RTS serial signals", "quickly resend frequently used commands to a device"], "what_it_is": "A cross-platform GUI tool for debugging and testing serial port, Bluetooth SPP/LE, TCP, and UDP connections. It provides data transceiving, realtime plotting, shortcut sending, and file transfer panels on Windows, Linux, macOS, and Android.", "when_to_avoid": ["you need headless or scripted serial automation (use a CLI or library instead)", "you need protocol analysis or decoding beyond raw data (use a logic analyzer tool)", "you only target Android USB serial devices without workarounds", "you need a lightweight terminal-only serial console"], "when_to_choose": ["you need a GUI serial monitor with plotting on Windows, Linux, macOS, or Android", "you want one tool covering serial, Bluetooth, TCP, and UDP debugging", "you need to visualize incoming data streams in realtime", "you want to save and reuse connection parameters per device"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/serialtest", "repo": "wh201906/SerialTest", "role": "main", "score": 23}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:05:16.206376+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T03:45:36.807327+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7174f714dc924cf60c51e2092c559462903e531dade4749ebd0e98bdfb7919dd", "fetched_at": "2026-08-28T04:05:16.206376+00:00", "kind": "readme", "missing": false, "url": "https://github.com/wh201906/SerialTest"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:05:16.206376+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T03:45:36.807327+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7174f714dc924cf60c51e2092c559462903e531dade4749ebd0e98bdfb7919dd", "fetched_at": "2026-08-28T04:05:16.206376+00:00", "kind": "readme", "missing": false, "url": "https://github.com/wh201906/SerialTest"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T03:45:36.807327+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7174f714dc924cf60c51e2092c559462903e531dade4749ebd0e98bdfb7919dd", "fetched_at": "2026-08-28T04:05:16.206376+00:00", "kind": "readme", "missing": false, "url": "https://github.com/wh201906/SerialTest"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:05:16.206376+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:05:16.206376+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:05:16.206376+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T03:45:36.807327+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7174f714dc924cf60c51e2092c559462903e531dade4749ebd0e98bdfb7919dd", "fetched_at": "2026-08-28T04:05:16.206376+00:00", "kind": "readme", "missing": false, "url": "https://github.com/wh201906/SerialTest"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:05:16.206376+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:05:16.206376+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T03:45:36.807327+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7174f714dc924cf60c51e2092c559462903e531dade4749ebd0e98bdfb7919dd", "fetched_at": "2026-08-28T04:05:16.206376+00:00", "kind": "readme", "missing": false, "url": "https://github.com/wh201906/SerialTest"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:05:16.206376+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:05:16.206376+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:05:16.206376+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T03:45:36.807327+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7174f714dc924cf60c51e2092c559462903e531dade4749ebd0e98bdfb7919dd", "fetched_at": "2026-08-28T04:05:16.206376+00:00", "kind": "readme", "missing": false, "url": "https://github.com/wh201906/SerialTest"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:05:16.206376+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:05:16.206376+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T03:45:36.807327+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7174f714dc924cf60c51e2092c559462903e531dade4749ebd0e98bdfb7919dd", "fetched_at": "2026-08-28T04:05:16.206376+00:00", "kind": "readme", "missing": false, "url": "https://github.com/wh201906/SerialTest"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T03:45:36.807327+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7174f714dc924cf60c51e2092c559462903e531dade4749ebd0e98bdfb7919dd", "fetched_at": "2026-08-28T04:05:16.206376+00:00", "kind": "readme", "missing": false, "url": "https://github.com/wh201906/SerialTest"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T03:45:36.807327+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7174f714dc924cf60c51e2092c559462903e531dade4749ebd0e98bdfb7919dd", "fetched_at": "2026-08-28T04:05:16.206376+00:00", "kind": "readme", "missing": false, "url": "https://github.com/wh201906/SerialTest"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T03:45:36.807327+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7174f714dc924cf60c51e2092c559462903e531dade4749ebd0e98bdfb7919dd", "fetched_at": "2026-08-28T04:05:16.206376+00:00", "kind": "readme", "missing": false, "url": "https://github.com/wh201906/SerialTest"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "rhythm": 8}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 2262, "days_push": 807, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 23, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}