随笔分类 - dotnet
摘要:因为某些原因需要自动启动一个 Winform 程序,可能是因为第三方资源的原因,使用 System.Diagnostics.Process 无法成功启动 (可以看到界面,但是会报 Unhandled Exception) 解决方案 (使用 Shell32) 导入方法 调用 参考 "C winform
阅读全文
摘要:算法 1. CRC16 校验寄存器赋值为 0xFFFF; 2. 取被校验串的第一个字节赋值给临时寄存器; 3. 临时寄存器与 CRC16 校验寄存器的 高位 字节进行“异或”运算,赋值给 CRC16 校验寄存器; 4. 取 CRC16 校验寄存器最后一位赋值给检测寄存器; 5. 把 CRC16 校验
阅读全文
摘要:算法 1.预置一个值为 0xFFFF 的 16 位寄存器,此寄存器为 CRC 寄存器。 2.把第 1 个 8 位二进制数据(即通信消息帧的第 1 个字节)与 16 位的 CRC 寄存器相异或,异或的结果仍存放在该 CRC 寄存器中。 3.把 CRC 寄存器的内容右移一位,用 0 填补最高位,并检测移
阅读全文
摘要:本文已收录至: "开源 DotNetty 实现的 Modbus TCP/IP 协议" Client (文中代码仅添加了 0x03 的方法) 在 Client 中封装了 Modbus 请求方法,对同一个功能同时有同步方法(ReadHoldingRegistersAsync)和异步方法(ReadHold
阅读全文
摘要:本文已收录至: "开源 DotNetty 实现的 Modbus TCP/IP 协议" DotNetty 作为一个半成品,我们不需要关注细节的实现,只需要关注自己的业务即可,所以最主要的就是处理 Codecs 和 Handler。 所有的 Codecs 和 Handler 均直接或间接继承自 Chan
阅读全文
摘要:本文已收录至: "开源 DotNetty 实现的 Modbus TCP/IP 协议" ModbusFunction 类图如下: 如前文所述,所有请求/相应的 PDU 均继承自 ModbusFunction,其子类传入对应的 Function Code 并实现三个方法: 1. CalculateLen
阅读全文
摘要:本文已收录至: "开源 DotNetty 实现的 Modbus TCP/IP 协议" Modbus TCP/IP 报文 + 报文最大长度为 260 byte (ADU = 7 byte MBAP Header + 253 byte PDU) + Length = Unit Identifier 长度
阅读全文
摘要:在整理照片/视频时想根据实际拍摄时间重命名文件,但 System.IO.FileInfo 只能获取到文件的创建时间或最后写入时间,不符合要求,遂寻找解决方案 方案 1: System.Drawing 1. "c 从相机拍摄的照片中提取拍摄时间" 此方法仅适用于图片:pass 方案 2: shell3
阅读全文