最近把一个压箱底的项目开源了:njs-modbus,一个零依赖、strict TypeScript 的 Node.js Modbus 协议栈,支持 TCP / RTU / ASCII / UDP / TLS 。
先上链接:
在 IIoT 边缘干了十多年,被各种 Modbus 库坑惨了:
大多数 Node.js Modbus 库没把自己当成工业软件写。所以我们决定自己写一个:运行时零依赖、strict TypeScript ,从第一行代码就按产线标准来。
Array.shift()。不是炫技,是现场 P99 真的会被这些小地方吃掉。
我们做了混沌测试:截断帧、粘包、垃圾字节、CRC 篡改、超长帧。结果是 TCP/RTU/ASCII 全过,而同类库在 RTU 上只有 8/12 和 3/12 。
更具体一点:噪声过去后,TCP 模式下约 270 µs、RTU 模式下约 850 µs 就能重新锁定下一帧头部,不销毁连接、不重启实例。
Pipeline 层就一个薄接口:
interface AbstractPipelineAdapter {
write(data: Buffer, cb?: (err?: Error) => void): void
on(event: 'data', listener: (data: Buffer) => void): this
}
TCP 、TLS 、UDP 、Serial 、WebSocket 、你自己的硬件抽象,都能接。示例里 WebSocket Pipeline 只写了 133 行。
欢迎拍砖,Issue 和 PR 都开放。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.