3

我正在尝试使用 Android KitKat IR API 发送 Pronto IR 命令。Android 抛出错误,说“非正切片”。我尝试了下面的示例 Pronto Hex 命令,我想使用 Android IR Manager API 发送该命令。请帮我解决问题。

Pronto IR Hex command: 0000 006D 0000 000D 0006 0115 0006 0115 0006 00BB 0006 00BB 0006 00BB 0006 00BB 0006 00BB 0006 00BB 0006 00BB 0006 00BB 0006 00BB 0006 0115 0006 0900

模式数组:int[] data = [0,109,0,13,6,277,6,277,6,277,6,277,6,187,6,277,6,187,6,187,6,187,6,277,6,187,6,187,6,2304]

irManager.transmit(38000, 数据);

4

2 回答 2

4

我不是 100% 确定,但我猜 0 是不允许的。

通常,您不需要前四位数字。Pronto Hex 格式由 3 个部分组成:

  • 前言
  • 突发对序列 1
  • 突发对序列 2(可选)

序言包含 4 位数字:

  1. 始终为 0。
  2. 频率。如果 n 是第二个数字,则频率计算公式为:1000000/(n*0,241246)
  3. 序列 1 中的突发对数
  4. 序列 2 中的突发对数

所以必须删除序列中的前四个数字。

注意:Android API 并非 100% 正确。 https://developer.android.com/reference/android/hardware/ConsumerIrManager.html#transmit(int , int[])

以微秒为单位传输的交替开/关模式。

但在某些 Android 版本上,也取决于设备,您必须发送脉冲计数而不是以微秒为单位的时间。脉冲计数取决于频率。每秒的脉冲数为 1000000/频率。在传输之前,您必须先将每个数字乘以该值。

于 2014-08-25T15:10:42.097 回答
0

我知道严格来说这不是您要寻找的东西,但是我也遇到了这个问题,结果证明我试图以错误的方式使用错误的代码。

我找到了这个资源:https ://irdatabase.globalcache.com/irdatabase.htm它看起来很可靠,至少对于我的三星电视来说是这样。

要使用它,你必须在 yahoo/google/facebook 上注册(我觉得这很奇怪......但我发现它的网站http://www.power7.net/SamsungIR.html说没问题,并且他们还没有向我发送垃圾邮件...)并选择您需要的设备。然后,您将得到如下所示的内容:

sendir,1:1,1,38226,1,1,170,171,21,65,21,65,21,65,21,22,21,22,21,22,21,22,21,22,21,65, 21,65,21,>65,21,22,21,22,21,22,21,22,21,22,21,22,21,65,21,22,21,22,21,22,21 ,22,21,22,21,22,21,65,21,22,2>1,65,21,65,21,65,21,65,21,65,21,65,21,1783,170,171 ,21,22,21,4892

删除“sendir,1:1,1”,您会发现 38226 作为您的频率。然后,下一个“,1,1”也应该被删除,剩下的就是你需要传输的。就像另一个答案所说,我需要将每个数字相乘:* 1000000/频率;

例如,我的 int[] 中上述的前几个数字如下所示:

int[0] = 4447 //(originally 170)
int[1] = 4473 //(originally 171)
int[2] = 549  //(originally 21) 

祝你好运,我希望这对你有帮助!

于 2014-08-28T23:23:02.360 回答