小编hij*_*ack的帖子

PLC结构化文本,将小数转换为实数(浮点数)。没有得到我期望的价值。(IEEE-754)

我有一个通过 Profibus DP 与 PLC 通信的硬件,它向我发送 4 个字节的十六进制数据,即“44 79 FF FF”,并且在 PLC 程序中,我已为该输入数据声明了一个 BYTE 数组。问题是在PLC中,我在字节数组中收到的数据是“66 121 255 255”,这是十六进制的十进制值,但我的目标是将该值转换为实数,当我这样做时,我不是得到我期望的值。

我创建了一个 DWORD( 4bytesData),将所有字节插入其中。所以在我插入4个字节之前,4bytesData字节是:in1 = 68, in2 = 121, in3 = 255&in4 = 255

4bytesData := (SHL(SHL(SHL(BYTE_TO_DWORD(in1), 8) OR BYTE_TO_DWORD(in2), 8) OR     BYTE_TO_DWORD(in3), 8) OR in4);

realValue := DWORD_TO_REAL(4bytesData);
Run Code Online (Sandbox Code Playgroud)

其中 in1、in2、in3 和 in4 是字节 0-3。

我得到的价值是;4bytesData= 1148846079 & realValue= 1.148846e+009

我期望获得的值realValue是 = 9.9999993896484375E2

如果我使用此网站( IEEE754 分析器/转换器)并转换十六进制值(4479FFFF),我将得到我想要的值,如果我插入十进制值(1148846079),我将得到与我在PLC。

我希望您理解我的问题,非常感谢。

floating-point plc decimal ieee-754 codesys

5
推荐指数
1
解决办法
3万
查看次数

XAML更改Togglebutton中的图像源

当Togglebutton"IsPressed"为真时,我正在尝试更改图像源(仅限XAML).但当我试图通过''Image.Trigger'绑定该属性时,它无法正常工作.

这就是我现在所拥有的,图像显示的完全像我想要的那样.

<ToggleButton x:Name="pbStations"
              Template="{StaticResource ContentOnlyTemplateToggleButton}">
  <StackPanel Orientation="Horizontal">
    <Image Source="/Sprites/Misc/ExpanderButtonClose.png"
           Margin="2"
           Stretch="Uniform"
           x:Name="img">
    </Image>
    <TextBlock Text="STATIONS"
               x:Name="tbStations"
               Style="{StaticResource tbTriggerGray}" />
  </StackPanel>
</ToggleButton>
Run Code Online (Sandbox Code Playgroud)

这是我试过的不起作用:

<ToggleButton x:Name="pbStations"
              Template="{StaticResource ContentOnlyTemplateToggleButton}">
  <StackPanel Orientation="Horizontal">
    <Image Source="/Sprites/Misc/ExpanderButtonClose.png"
           Margin="2"
           Stretch="Uniform"
           x:Name="img">
      <Image.Triggers>
        <DataTrigger Binding="{Binding ElementName=pbStations,Path=IsPressed}"
                     Value="True">
          <Setter TargetName="img"
                  Property="Image.Source"
                  Value="/Sprites/Misc/ExpanderButtonOpen.png" />
        </DataTrigger>
      </Image.Triggers>
    </Image>
    <TextBlock Text="STATIONS"
               x:Name="tbStations"
               Style="{StaticResource tbTriggerGray}" />
  </StackPanel>
</ToggleButton>
Run Code Online (Sandbox Code Playgroud)

c# wpf xaml visual-studio-2010

1
推荐指数
1
解决办法
1万
查看次数

更新 ObservableCollection 中的现有值

我正在尝试更新 ObservableCollection 并将值添加到 ObservableCollection

我已经这样定义了 ObservableCollection;

public ObservableCollection<Tuple<string, int>> LogSummary
{
  get;
  set;
}
Run Code Online (Sandbox Code Playgroud)

在我的班级中,我订阅了一个发送包含字母的字符串的事件:A、B、C、D、E 或 F。

如果我收到的字符串已存在于集合中,我只想更新第二项(int),即我收到的字符串字母的计数。

如果我写这段代码

LogSummary.Add(new Tuple<string, int>(_stringFromEvent, intValue));
Run Code Online (Sandbox Code Playgroud)

这只会在集合中添加一个新行,因此在使用 LogSummary.Add() 之前,我需要弄清楚如何检查字符串是否已经存在,如果存在,则应该采用当前的 int 值并更新它而不是添加集合中的一个新行。

希望你能理解我的问题!预先感谢,杰克

.net c# xaml c#-4.0

-1
推荐指数
1
解决办法
694
查看次数

标签 统计

c# ×2

xaml ×2

.net ×1

c#-4.0 ×1

codesys ×1

decimal ×1

floating-point ×1

ieee-754 ×1

plc ×1

visual-studio-2010 ×1

wpf ×1