小编Fab*_*abi的帖子

我该如何扭转这种看似简单的算法?

我有一些旧的LED板,你可以发送一些文本并将其挂在某处...它是在1994/95制造的,它通过串行端口进行通信,使用16位MS-DOS应用程序,你可以在其中输入一些文字.

所以,因为你可能无法在任何地方运行它,除非使用DOSBox或类似的技巧,我决定用C#重写它.

在对原始的dos-exe进行端口监视之后,我发现它对你重建它真的不感兴趣 - 必须回答请求,变化的字节,预先发送的"ping"消息等等......

也许你知道类似我的dos-exe使用的校验和例程/模式,或者你可以提供任何关于尝试逆向工程的技巧...另外,因为我只熟悉编程而且没有花太多时间在反转方法上和/或分析协议,如果这个主题有点愚蠢的想法,请不要判断我 - 我会很高兴得到任何帮助......

真正包含应该显示的文本的消息是143个字节长(只是那么长,因为如果你没有用尽你的文本的所有空间它会填充填充字节),并且在那个消息中我注意到以下模式:

  • 第四个字节(仍属于msg标头)与6或7个重复值的列表不同(在我的示例中,该字节始终为0F).

  • 最后两个字节用作校验和

一些例子:

  • 显示文字:"123"(十六进制:"31 32 33"),校验和十六进制:"45 52"
  • 文本:"132"("31 33 32"),校验和十六进制:"55 FF"
  • 文本:"122"("31 32 32"),校验和十六进制:"95 F4"
  • 文字:"133"("31 33 33"),校验和十六进制:"85 59"
  • 文本:"112"("31 31 32"),校验和十六进制:"C5 C8"
  • 文字:"124"("31 32 34"),校验和十六进制:"56 62"
  • 文字:"134"("31 33 34"),校验和十六进制:"96 69"
  • 文字:"211"("32 31 31"),校验和十六进制:"5D 63"
  • 文本:"212"("32 31 32"),校验和十六进制:"3C A8"
  • text:{empty},校验和hex:"DB BA"
  • text:"1"("31"),校验和hex:"AE 5F"

到目前为止,我完全确定校验和确实依赖于标头中的第四个字节,因为如果它发生变化,则校验和将完全不同,以便显示相同的文本.

这是一个显示"123"的完整143字节字符串的示例,仅用于为您提供更好的方向:

02 86 04 0F 05 03 01 03 01 03 01 03 00 01 03 00   ...............
00 31 00 32 00 33 …
Run Code Online (Sandbox Code Playgroud)

c# reverse-engineering

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

WPF:ItemsControl 中的行和列

我已经尝试通过设置一个带有和作为属性的网格来将 aListView和 an 的子项ItemsControl放在行和列中。RowDefinitionsColumnDefinitionsItemsPanel

但是,当我放置时,子控件始终与第 1 行和第 1 列对齐

<ItemsControl>

   <ItemsControl.ItemsPanel>
      <!-- Grid with rows & columns ... -->
   </ItemsControl.ItemsPanel>

   <ItemsControl.ItemTemplate>
      <DataTemplate>
         <TextBlock Grid.Row="4" Grid.Column="2" ... />
      </DataTemplate>
   </ItemsControl.ItemTemplate>

</ItemsControl>
Run Code Online (Sandbox Code Playgroud)

我怎样才能使这项工作?谢谢你。

c# wpf xaml itemscontrol

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

如何异步加载和显示图像

我是 WPF 新手,但我已经使用 C# 有一段时间了,目前正在开发一个简单的窗口(Windows 桌面),该窗口应该可视化目录中的所有照片。应用程序还应该了解 EXIF 数据,例如 ISO、光圈等,我为此使用了 DLL。

我定义了一个Photo类:

public class Photo {

    public string FileName { get; set; }
    public int ISO { get; set; }
    ...
}
Run Code Online (Sandbox Code Playgroud)

我想List<Photo>在运行时存储在 a 中。

然后我声明了一个PhotoItem(XAML 用户控件),其中包含一个图像控件和一个 TextBlock。对于每一个Photo创建的对象,都会有一个PhotoItem创建对象将相应的Photo属性保存为:

public partial class PhotoItem : UserControl {
    ...
    public Photo Photo { get; set; }
    ...
}
Run Code Online (Sandbox Code Playgroud)

从这个Photo属性PhotoItem中,知道在哪里寻找图像以及要显示什么 ISO 等。

现在我的问题。因为如果用户选择目录,加载图像本身以及元数据会花费太长时间,所以我想首先将所有 s 添加PhotoItem到窗口(仍然为空),然后运行元数据查找和图像缩略图加载对于他们每个人来说。当然,如果这些操作不阻塞 UI 线程那就最好了,因此我目前使用一个 …

c# wpf xaml multithreading

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