正在阅读:C++实现用掌上电脑遥控电视C++实现用掌上电脑遥控电视

2005-09-08 10:07 出处: 作者:朱先中编译 责任编辑:moningfeng

  调用函数SetCodeSize(DWORD)来设置要传送的位数(如12位)。这可以在任何时候完成且只需要做一次。它一直保持有效,直到后面的调用改变它为止。

  最后调用SendCode(long),传递实际要发送的代码。

BOOL CIrPulse::SendCode(DWORD lValue)
{
 DWORD dwCount;
 int i=0;
 ASSERT(iDataLength>0);
 //清除传送缓冲区
 VERIFY(PurgeComm(m_irPort,PURGE_TXABORT| PURGE_RXABORT |PURGE_TXCLEAR | PURGE_RXCLEAR));
 //每次按键设置代码6次
 for(int x=0;x<6;x++) {
  MakeStream(lValue); //发送代码
  dwCount=GetTickCount();
  while(GetTickCount()<dwCount+26) //延迟26ms
   i++;
 }
 return true;
}


  注意这个函数调用另外一个函数MakeStream(long)6次,每两次调用之间停顿26毫秒。我发现该代码必须发送好几次才能使接收设备响应,大概是为防止假行为的缘故吧。26毫秒对于接收设备登记该代码是必需的,在下一个代码出现之前。

  这个函数MakeStream(long)把字节流写入IrPort,并根据是否有起始位(1或者0)来确保发送正确的数据包长度。包含数据字节(0xdb)的缓冲区是以一个ByteArray形式存在的。

  函数Close()用于在端口使用后,自然地关闭IrPort。
键盘也能翻页,试试“← →”键

关注我们

最新资讯离线随时看 聊天吐槽赢奖品