将图像发送到爱普生无线投影仪(已解决!)

逆向工程 沟通
2021-06-21 07:47:44

我有一个 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 块

#1a - 全白图像 1024x768

2a - 彩色 (RGB565) 图像 1024x768 - 文件大小 58577 - 只有 3 个块

#2a - 彩色 (RGB565) 图像 1024x768

然后我将 3 个字节更改为 00:b5:80(将中间的字节增加 0x30)

1b - 全白 (RGB565) 图像 1024x768 - 文件大小 12915 - 22 整行和 4 个块。

全白 (RGB565) 图像 1024x768

2b - 彩色 (RGB565) 图像 1024x768 - 文件大小 58577 - 7 行和 22 个块。

彩色 (RGB565) 图像 1024x768

所以这 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 但这不是简单的东西!

0个回答
没有发现任何回复~