Dulus
An AI agent for your desktop and terminal, on any model you choose. Hosted models run on Fuel, paid in $DULUS.
翻译准备中
A unified CNC interface: the same address means the same thing on FANUC, SIEMENS SINUMERIK and Mitsubishi Electric controls. Native SDK (C ABI) plus an HTTP server. Freeware.
翻译准备中
正在加载完整 README。
查看完整 README ↗A unified CNC interface: one address model over Fanuc, Siemens, Mitsubishi and Heidenhain controls.
This repository hosts deemesh's documentation and releases. deemesh is free but not open source: this repo does not contain its source code. The "Source code" archives that GitHub attaches to each release contain only the files you see here.
🇰🇷 한국어 사용자: 제품명은 디메시(deemesh), 서버 제품은 디메시 허브(deemesh-hub)로 표기합니다. 다운로드 패키지에는 설정 가이드·명령 매뉴얼·주소 카탈로그 등 모든 문서가 한국어와 영어로 포함되어 있습니다 (
*_KO.md한국어 원본 +*_EN.md영어판).
On a shop floor, the same value sits behind different interfaces: FOCAS2 on one control, OPC-UA on another, EZSocket on a third. And a shared protocol is not the whole answer: where two controls both offer OPC-UA, their data models still differ, so the node holding an axis position on one is not the node on the other. Connecting a machine means learning its interface and its address space; the next one starts over.
deemesh puts one address layer on top. Whether the machine runs a Fanuc, Siemens, Mitsubishi Electric or Heidenhain control, you read and write axis positions, alarms, programs and tool data through the same command structure:
/machine/channel/axis/machinePosition?channel=1&axis=1
That address is the same on every supported control, and deemesh maps it onto each vendor's interface underneath. Where controls behave differently, or an address is not available on one of them or needs an option installed on the machine, the catalog says so for that address.
The interface itself is public. Browse the complete address catalog here: English · 한국어
| What it is | Who it's for | |
|---|---|---|
| deemesh-sdk | A native library (.dll / .so) callable from C#, Python, C++ and Rust over the C ABI | Developers integrating equipment communication into their own application |
| deemesh-hub | A standalone HTTP server (plain GET/POST, no code required) | Anyone who wants to use it over HTTP without writing code, or to try it first |
Both are free. Grab them from Releases below.
The fastest way to see what deemesh does:
-win-portable.zip) and unzip it. To run the hub as a Windows service instead, take the installer (-win-setup.exe): it asks for an admin code and a port, starts the service, and you continue at step 3.deemesh-hub-x64.exe (Windows will ask once whether to allow it through the firewall. Click Allow if other PCs will call it; it is not a virus warning). It starts with default settings and writes deemesh-hub.toml (where the hub listens and who may call it) and deemesh-data/hub/machines.json (the machine list).http://localhost:8080/admin in a browser, Log in with the admin code the hub wrote in deemesh-hub.toml (admin_code), press Edit, add your machine with + Add machine (its IP and protocol) and press Save./admin/address) to:
write_enabled is turned on (writes are off by default).Connect it to a real machine and you can try, right away and in the browser, what reads and writes on that machine. If you want to evaluate before committing, this catalog is the front door.
# Calling it directly is just HTTP
curl "http://localhost:8080/machine/channel/axis/machineposition?machine=1&channel=1&axis=1"
# → {"status":0,"value":123.456}
The hub is designed for a trusted network inside the plant. Access control is three IP whitelists (read, write and admin), a write switch per machine and an admin code, with HTTPS available; there is no built-in user login. To expose it beyond that, put it behind an authenticating reverse proxy. Details in the hub guide.
The download package is the native library plus its C header, a standard C ABI, so you call it with whatever FFI your language already has. No wrapper to install, nothing to keep in sync with us.
| Language | How you call it |
|---|---|
| C / C++ | Include include/deemesh.h, link the .dll / .so |
| C# | [DllImport] / P/Invoke |
| Python | ctypes (standard library) |
| Rust | extern "C", or load at runtime with libloading |
| Java, Go, others | JNI / Panama, cgo, … |
There are nine functions in total. deemesh.h is the authoritative declaration (signatures, the DeemeshResult layout, and the error-code macros) and FFI_EN.md / FFI_KO.md in the download walk through calling them, with worked examples in C#, Python and C/C++.
DeemeshHandle h = NULL;
deemesh_create("{\"protocol\":\"nc_focas2_fanuc\",\"host\":\"192.168.1.100\","
"\"port\":8193,\"library_path\":\"fwlib32.dll\"}", &h);
deemesh_connect(h);
DeemeshResult r = deemesh_read(h, "/machine/channel/motionstatus?channel=1", 10000);
printf("%s\n", r.data); // {"status":0,"value":1,"desc":"Motion"}
deemesh_free_string(r.data);
/* create/connect also return a DeemeshResult - free their .data the same way
(omitted here for brevity; the FFI guide shows the full pattern) */
以上为 README 的开头部分。其余内容请阅读原文。 查看完整 README ↗