65.9K
CodeProject 正在变化。 阅读更多。
Home

USB IR 与 c8051

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.50/5 (3投票s)

2009年3月16日

CPOL

2分钟阅读

viewsIcon

40861

downloadIcon

2463

USB IR 与 c8051

USB_IR_with_c8051/previews2.JPG

查看大图

引言

这是一个类似于 WinLirc 的应用程序,它使用 USB toolstick 而不是 RS232,适用于所有电视遥控器。
它可以远程控制您的计算机,使用所有制造商的红外遥控器,只需要来自 silabs 的 toolstick。
这个 toolstick 可以是 Toolstick Base 适配器 (F326) 或 toolstick 调试适配器 (F321)。
同样适用于红外传感器 - 适用于所有在 5V 下工作并接收 38KHz 信号的传感器 (TSOP -1708, IRM8752, 实际上任何红外接收模块) 或任何 3.3V 的传感器,如果您提供 3.3V 并修改电路图。

当然,红外传感器无法将 TX 引脚提升到足够高的电平,您需要在调试适配器的输入端在 5V 和 RX 引脚之间连接一个 4.7K 电阻 (类似于这样)。

背景

也请查看我之前的工作和项目中的 Counter_based_c8051.aspxToolstick_LCD_with_c8051.aspx,它们使用了相同的“调试适配器”。

Using the Code

您可以将命名的红外代码放入位于 app.path 文件夹中的 'Settings.ini' 文件中,并通过设置 ShowTheMatch=true 来教程序识别遥控器。
然后您可以从主窗口复制粘贴代码到 'Settings.ini' 文件中,代码之间用 '' 符号分隔。
重复的代码用 ':Nr' 标记。实际上,这是遥控器在您长时间按住按钮时发送的红外重复代码 '01'。
这不重要 - 但当您想通过遥控器增加 '音量' 时,按住按钮比反复按下它更方便。
为了不将发送的信号与其他重复信号混淆,程序会定期将实际信号重置为零 (这意味着当遥控器在 100 毫秒内没有发送代码时,它会将发送的信号重置为零 - 程序会再次等待实际代码)。
这用于消除红外探测器因荧光灯或其他干扰引起的错误噪声信号。

USB_IR_with_c8051/NotMatch.JPG

默认情况下,信号长度设置为捕获 22 位长度的信号 - 您可以在代码中根据您的遥控器进行更改。

If CurIndex > 22 Then
    '---------------
    For i = 0 To MaxCodesCount
        If Codes(i).CodeBinary = Code Then
            Code = Codes(i).CodeName
            match = True
            Exit For
        End If
    Next i
        If match Then
            Interval = 0
            RepeatCount = 0
            RaiseEvent ReadMess(Code & ":" & RepeatCount & vbCrLf, 1)
            PrevCode = Code
            bRepeat = True
        Else 'not match found
            If ShowNotMatching Then RaiseEvent ReadMess_
        	      ("not match '" & Code & "'" & vbCrLf, 1)
                bRepeat = False
        End If
    '-------------------
    'Code = ""
End If

Notify.dll 充当主应用程序的中间通知事件消息传递器。
WindowTitle.dll 会定期检查 window.hWnd 数字,并通过 notify.dll 向主应用程序通知更改。

示例 Settings.ini

[Codes]
ShowNotMatching=0
Max=6
0=000101111101011001101111;Up
1=00010111110101100100111;Down  
2=00010111110111000011101;Right
3=0001011111001000011101;Left
4=0001011111011010000101;OK
5=0001011111001000100111;Top
6=0001011111000100010111;Off		

在我的应用程序中,我向名为 'VLC DirectX video' 和 'TV' 的窗口发送消息。
此外,我还可以远程 '关机'。

© . All rights reserved.