首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用moka7从plc读取字符串

使用moka7从plc读取字符串
EN

Stack Overflow用户
提问于 2018-10-01 12:04:58
回答 1查看 1.8K关注 0票数 0

如何从DB560读取字符串,偏移量为0.0,大小为12字节。垃圾值出现在输出端。

代码语言:javascript
复制
S7Client client = new S7Client();
client.SetConnectionType (S7.S7_BASIC);
int res = client.ConnectTo("192.168.0.1", 0, 1); 
byte[] data = new byte[12];
client.ReadArea(S7.S7AreaDB, 560, 0, 12, data); 
String ret = S7.GetStringAt(data,0,12);
System.out.println(ret);
EN

回答 1

Stack Overflow用户

发布于 2018-10-02 06:45:51

S7数据类型字符串的前2个字节如下所示:

位置n:最大长度

位置n+1:电流长度

正因为如此,第一个字符不是位于位置n,而是位于n+2位置。

代码语言:javascript
复制
byte[] data = new byte[14];
client.ReadArea(S7.S7AreaDB, 560, 0, 14, data);
String ret = S7.GetStringAt(data,0+2,12);

备选方案:

代码语言:javascript
复制
byte[] data = new byte[12];
client.ReadArea(S7.S7AreaDB, 560, 2, 12, data);
String ret = S7.GetStringAt(data,0,12);

或者将moka7代码更改为如下(这是sharp7的代码):

代码语言:javascript
复制
public static string GetStringAt(byte[] Buffer, int Pos)
{
    int size = (int)Buffer[Pos + 1]; //Current length of the string
    return Encoding.UTF8.GetString(Buffer, Pos + 2, size);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52590723

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档