njs-modbus 3.1.1 → 3.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (44) hide show
  1. package/README.md +20 -0
  2. package/README.zh-CN.md +20 -0
  3. package/dist/index.cjs +878 -384
  4. package/dist/index.d.ts +87 -25
  5. package/dist/index.mjs +878 -385
  6. package/dist/utils.cjs +439 -0
  7. package/dist/utils.d.ts +161 -0
  8. package/dist/utils.mjs +425 -0
  9. package/package.json +15 -2
  10. package/dist/src/error-code.d.ts +0 -17
  11. package/dist/src/index.d.ts +0 -7
  12. package/dist/src/layers/application/abstract-application-layer.d.ts +0 -26
  13. package/dist/src/layers/application/ascii-application-layer.d.ts +0 -23
  14. package/dist/src/layers/application/index.d.ts +0 -6
  15. package/dist/src/layers/application/rtu-application-layer.d.ts +0 -34
  16. package/dist/src/layers/application/tcp-application-layer.d.ts +0 -16
  17. package/dist/src/layers/physical/abstract-physical-layer.d.ts +0 -50
  18. package/dist/src/layers/physical/index.d.ts +0 -12
  19. package/dist/src/layers/physical/serial-physical-layer.d.ts +0 -70
  20. package/dist/src/layers/physical/tcp-client-physical-layer.d.ts +0 -20
  21. package/dist/src/layers/physical/tcp-physical-connection.d.ts +0 -16
  22. package/dist/src/layers/physical/tcp-server-physical-layer.d.ts +0 -29
  23. package/dist/src/layers/physical/udp-client-physical-layer.d.ts +0 -34
  24. package/dist/src/layers/physical/udp-server-physical-layer.d.ts +0 -51
  25. package/dist/src/layers/physical/utils.d.ts +0 -39
  26. package/dist/src/layers/physical/vars.d.ts +0 -11
  27. package/dist/src/master/index.d.ts +0 -3
  28. package/dist/src/master/master-session.d.ts +0 -18
  29. package/dist/src/master/master.d.ts +0 -140
  30. package/dist/src/slave/index.d.ts +0 -2
  31. package/dist/src/slave/slave.d.ts +0 -119
  32. package/dist/src/types.d.ts +0 -54
  33. package/dist/src/utils/bitsToMs.d.ts +0 -13
  34. package/dist/src/utils/callback.d.ts +0 -8
  35. package/dist/src/utils/checkRange.d.ts +0 -1
  36. package/dist/src/utils/crc.d.ts +0 -1
  37. package/dist/src/utils/index.d.ts +0 -11
  38. package/dist/src/utils/isUint8.d.ts +0 -8
  39. package/dist/src/utils/lrc.d.ts +0 -1
  40. package/dist/src/utils/predictRtuFrameLength.d.ts +0 -17
  41. package/dist/src/utils/promisify-cb.d.ts +0 -4
  42. package/dist/src/utils/rtu-timing.d.ts +0 -63
  43. package/dist/src/utils/whitelist.d.ts +0 -11
  44. package/dist/src/vars.d.ts +0 -49
package/README.md CHANGED
@@ -152,6 +152,26 @@ const slave = new ModbusSlave({
152
152
  | `idleTimeout` | `number` | Idle timeout in ms before evicting a connection. Default `30000`. Pass `0` to disable. |
153
153
  | `socketOpts` / `serverOpts` | `object` | Forwarded to Node.js `createSocket()` / `createServer()`. |
154
154
 
155
+ ## Custom Physical Layer
156
+
157
+ Any byte-oriented transport can be used by implementing `AbstractPhysicalLayer` and `AbstractPhysicalConnection`, then passing `{ type: 'CUSTOM', layer: yourLayer }`.
158
+
159
+ ```typescript
160
+ import { AbstractPhysicalLayer, AbstractPhysicalConnection } from 'njs-modbus';
161
+
162
+ class MyPhysicalLayer extends AbstractPhysicalLayer { /* open / close */ }
163
+ class MyConnection extends AbstractPhysicalConnection { /* write / destroy, emit 'data' */ }
164
+
165
+ const master = new ModbusMaster({
166
+ physical: { type: 'CUSTOM', layer: new MyPhysicalLayer() },
167
+ protocol: { type: 'TCP' },
168
+ });
169
+ ```
170
+
171
+ See [`examples/websocket`](./examples/websocket) for a complete **Modbus TCP over WebSocket** implementation — client/server physical layers with a working demo.
172
+
173
+ See [`examples/bluetooth`](./examples/bluetooth) for a **Modbus TCP over BLE** implementation using the Nordic UART Service (NUS) — includes a loopback test that runs without real BLE hardware.
174
+
155
175
  ## Master API
156
176
 
157
177
  ```typescript
package/README.zh-CN.md CHANGED
@@ -152,6 +152,26 @@ const slave = new ModbusSlave({
152
152
  | `idleTimeout` | `number` | 空闲超时(毫秒),超时后驱逐连接。默认 `30000`,传 `0` 禁用。 |
153
153
  | `socketOpts` / `serverOpts` | `object` | 透传给 Node.js `createSocket()` / `createServer()`。 |
154
154
 
155
+ ## 自定义物理层
156
+
157
+ 任何面向字节的传输层都可以通过实现 `AbstractPhysicalLayer` 和 `AbstractPhysicalConnection` 来使用,然后传入 `{ type: 'CUSTOM', layer: yourLayer }`。
158
+
159
+ ```typescript
160
+ import { AbstractPhysicalLayer, AbstractPhysicalConnection } from 'njs-modbus';
161
+
162
+ class MyPhysicalLayer extends AbstractPhysicalLayer { /* open / close */ }
163
+ class MyConnection extends AbstractPhysicalConnection { /* write / destroy, emit 'data' */ }
164
+
165
+ const master = new ModbusMaster({
166
+ physical: { type: 'CUSTOM', layer: new MyPhysicalLayer() },
167
+ protocol: { type: 'TCP' },
168
+ });
169
+ ```
170
+
171
+ 查看 [`examples/websocket`](./examples/websocket) 获取完整的 **WebSocket 承载 Modbus TCP** 实现——包含客户端/服务端物理层及可运行的演示。
172
+
173
+ 查看 [`examples/bluetooth`](./examples/bluetooth) 获取 **BLE 承载 Modbus TCP** 实现(基于 Nordic UART Service),包含无需真实蓝牙硬件即可运行的回环测试。
174
+
155
175
  ## 主站 API
156
176
 
157
177
  ```typescript