这是一个通过手机程序控制集团下属几家分公司的会议室投影仪,电视机,空调等设备的开启与关闭,简化会议之前的准备工作。
大致思路如下:手机发送信息->中间设备接收->解析为红外线信号->传送给红外线发射器->发射信号->投影仪接受红外线->开启对应功能
现在我手里有一个红外线发射装置,并且自带路由器功能,让手机或者其他设备可以连接(国外的,版本为Irdroid v3.0 WIFI),其中存储了各个公司的不同品牌和类型的设备对应的红外线功能列表(我不会表示哈,就是类似遥控器里面每个按钮代码与对应的红外线代码,然后还有遥控器品牌,不同的品牌有些区别,每个厂家一般都有这些公开的红外线代码,如果有一些更新,而设备上没有存储的话可以自己去上传这些配置文件),然后我需要写一个功能,能够让这个设备发送红外线信号,Team Leader 需要我写成一个WCF,方便手机或者web端的程式调用。
通过查看相关文档与源码,我发现我想要连接到发射器上,需要写一个socket程序(第一次写这样的项目),定义了一个方法SendCMDtoIR(string server,int port,int timeout,String remote,String command,int count)
相关参数解释:
server:需要连接的Ir设备(发射红外线装置)的Ip地址
port:需要连接的Ir设备(发射红外线装置)的端口号
timeout:socket连接超时时间
remote:接受红外线信号的红外线设备类型
command:通知Ir设备发送红外线的指令参数
count:每次调用wcf指令发送次数
1.对外方法
public void SendCMDtoIR(string server, int port, int timeout,String remote,String command,int count)
{
LircClient client = null;
//client = new LircClient("192.168.2.1", 8765, true, 5000);初始化Ir对象:IP地址,端口,是否开启,连接超时时间
client = new LircClient(server, port, true, timeout);
//for (int i = 0; i < 1000000; i++)
//{
client.sendIr1Command(remote, command,count); // sends and Test IR
//client.sendIr1Command("Samsung_TV", "MUTE", 1);
// Thread.Sleep(1000);
//}
}
}
2.LircClient.cs
private static String lircServerIp;
public readonly static int lircDefaultPort = 8765;
private int lircPort;
public readonly static String defaultLircIP = "127.0.0.1";
public readonly static int defaultTimeout = 5000;
private Boolean verbose = true;
private int timeout = defaultTimeout;
public LircClient(String hostname, int port, Boolean verbose, int timeout)
{
this.timeout = timeout;
lircServerIp = (hostname != null) ? hostname : defaultLircIP;
lircPort = port;
this.verbose = verbose;
}