问题标签 [preon]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
209 浏览

preon - 使用 Preon 获取对象字段的大小和偏移量

我正在使用 Preon 为 Eclipse 开发一个共享对象编辑器/查看器。编辑器看起来像:

编辑器视图

为了改进它,我想实现一个功能,一旦在顶部面板上选择了一个条目,它就会在底部面板上突出显示相应的字节。为此,使用 Preon 检索我的对象的给定字段的大小和偏移量会非常有趣。

我怎样才能做到这一点?还有其他选择吗?

0 投票
0 回答
142 浏览

preon - Preon encode() 在到达字节边界之前不会填充剩余的位

我有一条消息,其中编码了可变长度的 7Bit 字符。不幸的是,这些 7Bit 字符作为 7Bit 存储在消息中。这意味着消息的最后一个字节不一定与字节边界对齐。

使用 Preon 解码消息可以正常工作,但是在使用 Preon 对先前解码的消息进行编码并比较字节数组时,数组的长度不匹配。编码后的字节数组比原来的小一个字节。

我调试了 Preon,因为我假设了一个错误,但它按设计工作。当达到字节边界时,Preon 会存储剩余的位,直到发生对 BitChannel 的下一次 write() 调用。但是对于最后一个字节,没有进一步的调用。

问题是,有没有办法告诉 Preon 刷新剩余的缓冲区?

0 投票
2 回答
150 浏览

java - Preon 枚举解释和映射

根据http://www.scribd.com/doc/8128172/Preon-Introduction,Preon 可用于将位解码为枚举表示,如下所示:

// Reads a bit from the buffer, and interprets it as an enum value,
// interpreting the number as its ordinal value.
@BoundNumber(size="2")
Type type;

现在,我的问题是:如果你有一个枚举,例如: 00 是否总是映射到 VALUE_A,而 01 总是映射到 VALUE_B,因为它们是按那个(升序?)顺序写的?我可以指望这种情况总是如此吗?枚举在 Java 中以什么方式被重视,Preon 是如何解决这种情况的?
public static enum TestEnum {
VALUE_A, VALUE_B
}

0 投票
1 回答
196 浏览

decode - Preon 解码然后编码不返回相同的字节数组

我正在使用 Preon 对字节数组中的枚举字段进行编码。

第一个字节的字段(示例字节:0xf7=1111 01 11)设置如下:

解码工作正常,因此我希望将解码后的对象编码回字节数组将产生与我从一开始就有的相同字节数组。然而,情况并非如此。相反,第一个字节中的位编码如下:

0xdf=11 01 1111

也就是说,段以相反的顺序编码!为什么解码编码不返回相同的字节数组?我需要做什么?我缺少某种订单注释吗?

感谢您的回复,因为 Preon 文档似乎很少!

0 投票
1 回答
290 浏览

java - Preon 二进制解析器的循环依赖

我有一对相互依赖的二进制文件要解析。我正在使用Preon库。

这些文件被命名为rec.table 和rec.offset。一个是到另一个的偏移索引(rec.offset 文件的行 32 位整数,表示到 rec.table 的字节偏移)。rec.offset 中的行数取决于 rec.table 中可用的数据之一(recordCount 字段)。我需要提供偏移条目列表的大小,并且我需要使用该列表来访问记录条目,如下面的@BoundList 情况所示。

我有以下设置:

和:

当我运行它时,我收到一个类似于“ Parsing variable record lengths in Preon ”一文中报告的错误:

这个错误是指在偏移数组的大小属性中使用了recTable。与另一个问题一样,我可以通过提供一个常量大小或伪造一个简单的 @BoundNumber 绑定并引用它来克服这个错误。

在我上面链接的另一个问题中,用户遇到循环依赖跨两个类的情况,但是在解析一个文件时,我必须解析两个单独的文件。我假设 Wilfred Springer 提到的补丁(PREON-9)已经集成到 github 存储库(在 PREON-48)。

我该如何处理这种循环依赖?我错过了一个技巧吗?

0 投票
1 回答
113 浏览

preon - Preon 中的枚举是如何定义的?

我正在尝试使用从 github (v 1.1) 编译的 preon 来解析从嵌入式 C++ 应用程序获得的消息。我在我的项目中包含了 antlr 3.3-complete 版本。我将以下类定义为网络消息的标头:

MessageType 枚举如下:

我尝试将接收到的网络缓冲区转换如下:

我收到以下 antlr 错误。我的定义或包含的软件包有问题吗?

第 1:0 行在输入“< EOF >”处没有可行的替代方案

谢谢

0 投票
1 回答
717 浏览

java - 如何安装 Preon?

我正在尝试安装 preon 并在 IntelliJ 中运行它。

我已经从https://github.com/preon/preon下载了源代码。

然后我用 IntelliJ 打开项目。

然后我下载 pecia 并将其作为模块导入 preon 项目。

然后我尝试在 ...preon-master/preon-samples/preon-sample-bmp/src/test/java/org/codehaus/preon/sample/bmp/BitmapFileTest.java 运行 BitmapFileTest 程序

这是我得到的前几个错误:

...preon-master/preon-el/src/main/java/org/codehaus/preon/el/Expressions.java

  • 错误:(151、24)java:找不到符号符号:类 LimboWalker 位置:类 org.codehaus.preon.el.E​​xpressions
  • 错误:(154、9)java:找不到符号符号:类 LimboLexer 位置:类 org.codehaus.preon.el.E​​xpressions
  • 错误:(154、32)java:找不到符号符号:类 LimboLexer 位置:类 org.codehaus.preon.el.E​​xpressions
  • 错误:(156、9)java:找不到符号符号:类 LimboParser 位置:类 org.codehaus.preon.el.E​​xpressions
  • 错误:(156、34)java:找不到符号符号:类 LimboParser 位置:类 org.codehaus.preon.el.E​​xpressions
  • 错误:(160、9)java:找不到符号符号:类 LimboWalker 位置:类 org.codehaus.preon.el.E​​xpressions
  • 错误:(160、55)java:找不到符号符号:类 LimboWalker 位置:包 org.codehaus.preon.el

由于某种原因,编译器无法在自己的项目中找到 Limbo 类。

我需要做什么才能构建和运行这个示例项目?

0 投票
1 回答
119 浏览

preon - 我需要一个 BCD 解码器和编码器

我刚刚开始使用 Preon 解码来自无线电的配置数据(频道号、频率、模式、频道名称等)。不同的无线电具有不同的无线电格式,通常完全不同。Preon 似乎是完美的解决方案。并且它是可扩展的。

一台收音机以 BCD 格式存储频率数据(8 位频率存储在 4 个字节中)。所以我想我需要在 Preon 中开发一个 BCD 解码器和编码器。我相信我已经阅读了我可以在网上找到的有关 Preon 的所有信息,但我不知道该怎么做。

如果您已经为 Preon 开发了自定义编解码器,请给我一些关于如何开始的提示。

0 投票
1 回答
291 浏览

java - 使用 Preon 框架的简单算术

我正在使用 Preon Binding 来读取传入的二进制数据流。

我们遇到的问题是某些字段值需要一些简单的算术才能正确表示,正如我们的“数据文档”所说:

  • 字段 lat:来自设备坐标的纬度分量。在二进制格式中,纬度必须除以 1.000.000
  • 磁场方向:设备的方位角除以 3

Preon 可以在绑定时支持这样的算术,还是我必须在解码后专门做它(这使得解码的 DTO 值不一致)?

其他字段(latPositive 和 lngPositive)为其对应的值(lat 和 lng 字段)提供数学符号(负数或正数),我认为这也可以通过在负数情况下乘以 -1 来支持,但这只会如果 Preon 实际支持某种算术,则可能。

映射基本如下:

PS:是否有 Preon 用户邮件列表可用?

0 投票
1 回答
77 浏览

java - Preon 框架收集分离的位(实际上是半字节)

我尝试使用 Preon 解码的二进制流的值由 5 个不连续的半字节组成,例如:

十六进制数据:00A00000F200EE0000

考虑到必须从非零标记的半字节中提取值到 AF2EE,这可能使用 Preon 吗?如果是这样,您能否提供任何提示?

PS:零仅用于示例,它们不代表选择要提取哪些半字节的标准,因为它们是需要的固定位置半字节。

也许@wilfred-spinger 可以提供帮助?