我有一个 Epson Ex5220,它没有 linux 驱动程序,并且一直在尝试通过 wifi 进行通信。我可以从带有驱动程序的 Windows 机器连接并发送通过数据包跟踪捕获的图像,但无法创建可接受的图像。这就是问题所在:
在数据发送中,一个 jpeg 图像被发送,并附有这样的标题。
00:00:00:01:00:00:00:00:02:70:01:a0:00:00:00:07:90:80:85:00
00:00:00:04 - Number of jpeg images being sent (only the first header)
00:00 - X offset
00:00 - Y offset
02:70 - Width of Jpeg image (624 in this case)
01:a0 - Height of Jpeg image (416 in this case)
00:00:00:07:90 - Unknown (I believe it's a version number perhaps)
80:85:00 - (What I'm after) Some count of data units?
标题后面是一个普通的 jpeg 图像。如果我去掉那个标题,我可以查看图像。这是部分捕获的屏幕截图,其中突出显示了 3 个字节:
通过将最后三个字节设置为 80:85:00,我发现似乎是基线。少了任何东西,图像都不会投影。此外,我可以发送到投影仪的最小图像尺寸是 3w x 1h,它与下面显示的前两个图像相关。
这里有些例子:
1a - 全白 (RGB565) 图像 1024x768 - 文件大小 12915 - 4 块
2a - 彩色 (RGB565) 图像 1024x768 - 文件大小 58577 - 只有 3 个块
然后我将 3 个字节更改为 00:b5:80(将中间的字节增加 0x30)
1b - 全白 (RGB565) 图像 1024x768 - 文件大小 12915 - 22 整行和 4 个块。
2b - 彩色 (RGB565) 图像 1024x768 - 文件大小 58577 - 7 行和 22 个块。
所以这 3 个字节似乎与数据单元有关。我已经阅读了很多关于 jpeg 的内容,并且仍在消化其中的大部分内容,但我想如果我知道计算数据单元需要什么,我会发现我的神秘 3 字节。
附加信息:
本投影机仅支持使用 RGB565 jpeg 图像内部数据发送。
解决方案!!!!!
我能够解决这个问题,但我想知道为什么会这样。这是最后 3 个字节的公式:
int iSize = bImage.length;
baHeader[17] = (byte) ((iSize) | 0x80);
baHeader[18] = (byte) ((iSize >> 7) | 0x80);
baHeader[19] = (byte) ((iSize >> 14));
我厌倦了搞乱它,只看几张图像,写下所有文件大小和魔术字节,将所有内容转换为二进制,并在 ANDing ORing bitshifting 上敲定,直到我强制使用一个有效的公式。我想知道这是否与计算 jpeg 数据单位有关。我仍在研究 Jpeg 但这不是简单的东西!




