.net - Modbus TCP Little Endian 字节交换
问题描述
我正在使用 FluentModbus,也尝试过 EasyModbus,与 Delta SE CPU 通信,只要我读/写单个寄存器,我就可以正常通信,问题是我需要转换为 Little Endian ByteSwap 才能访问 PLC Doubles 和 Floats,有使用我不久前为 excel 购买的 ModbussPoll 对此进行了测试。
知道如何解决这个问题吗?
谢谢
解决方案
谢谢你的帮助。
这有效
var ReadunitIdentifier = (byte)0xFF;
var ReadstartingAddress = (ushort)40;
var Readcount = (ushort)4;
if (modbusTcpClient.IsConnected)
{
try
{
var byteData = modbusTcpClient.ReadHoldingRegisters<byte>(ReadunitIdentifier, ReadstartingAddress, Readcount);
byte highByte0 = byteData[0];
byte lowByte0 = byteData[1];
byte highByte1 = byteData[2];
byte lowByte1 = byteData[3];
byte[] doubleBytes =
{
lowByte0, highByte0,lowByte1,highByte1
};
SharedVariables.LoadcellScaled = BitConverter.ToInt32(doubleBytes, 0);
}
推荐阅读
- linux - 在 VPS 上执行 long take uglifyjs
- php - 如果未选择 1 Out Of 3 Variation 则启用添加到购物车按钮
- ansible - 是否有任何功能可以仅使用更改的文件进行部署?
- c# - .Net Core MVC 应用程序的图像调整大小、裁剪、旋转库
- php - 将 url 重写为子域(使用 htaccess 的 Codeigniter)
- java - 如何在 @Query 注释中为 spring 数据 DynamoDb 设置表达式属性名称
- string - 为什么这段代码做错误的计算?
- python - 如何从未指定变量名的 jupyter 笔记本单元格中获取输出?
- kotlin - 如何使用 Kotlin KClass 属性 simpleName 生成空值
- python - 为什么模型的图层形状是 (1000,) 而不是 Keras 中的 (1000)?