Показано с 1 по 10 из 344

Древовидный режим

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #11
    Пользователь
    Регистрация
    12.02.2008
    Сообщений
    52
    Вес репутации
    226

    По умолчанию Re: Управление компьютером, любым ИК пультом.

    Могу добавить протокол для пультов SHARP и PANASONIC. Вот только проверить не начем, если кого заинтересует пишите , добавлю

    PHP код:
    #define PANASONIC_HDR_MARK 3502
    #define PANASONIC_HDR_SPACE 1750
    #define PANASONIC_BIT_MARK 502
    #define PANASONIC_ONE_SPACE 1244
    #define PANASONIC_ZERO_SPACE 370

    //Sending function:
    void IRsend::sendPanasonic(unsigned long addressunsigned long data) {
     
    enableIROut(38);
     
    mark(PANASONIC_HDR_MARK);
     
    space(PANASONIC_HDR_SPACE);
     for (
    int i=032i++) {
     
    mark(PANASONIC_BIT_MARK);
     if (
    address 0x80000000) {
     
    space(PANASONIC_ONE_SPACE);
     } else {
     
    space(PANASONIC_ZERO_SPACE);
     }
     
    address <<= 1;
     }
     for (
    int i=016i++) {
     
    mark(PANASONIC_BIT_MARK);
     if (
    data 0x8000) {
     
    space(PANASONIC_ONE_SPACE);
     } else {
     
    space(PANASONIC_ZERO_SPACE);
     }
     
    data <<= 1;
     }
     
    mark(PANASONIC_BIT_MARK);
     
    space(30000);
     
    space(30000);
     
    space(14000);
    }

    //Receiving funtion:
    long IRrecv::decodePanasonic(decode_results *results) {
     
    unsigned long data 0;
     
    int offset 1;

     if (!
    MATCH_MARK(results->rawbuf[offset], PANASONIC_HDR_MARK)) {
     return 
    ERR;
     }
     
    offset++;
     if (!
    MATCH_MARK(results->rawbuf[offset], PANASONIC_HDR_SPACE)) {
     return 
    ERR;
     }
     
    offset++;

     
    // decode address
     
    for (int i 032i++) {
     if (!
    MATCH_MARK(results->rawbuf[offset++], PANASONIC_BIT_MARK)) {
     return 
    ERR;
     }
     if (
    MATCH_SPACE(results->rawbuf[offset],PANASONIC_ONE_SPACE)) {
     
    data = (data << 1) | 1;
     } else if (
    MATCH_SPACE(results->rawbuf[offset],PANASONIC_ZERO_SPACE)) {
     
    data <<= 1;
     } else {
     return 
    ERR;
     }
     
    offset++;
     }
     
    results->address data;
     
    data 0;
     for (
    int i 016i++) {
     if (!
    MATCH_MARK(results->rawbuf[offset++], PANASONIC_BIT_MARK)) {
     return 
    ERR;
     }
     if (
    MATCH_SPACE(results->rawbuf[offset],PANASONIC_ONE_SPACE)) {
     
    data = (data << 1) | 1;
     } else if (
    MATCH_SPACE(results->rawbuf[offset],PANASONIC_ZERO_SPACE)) {
     
    data <<= 1;
     } else {
     return 
    ERR;
     }
     
    offset++;
     }
     
    results->value data;

     
    results->decode_type PANASONIC;
     
    results->bits 48;
     return 
    DECODED;

    Протокол для пультов SHARP

    PHP код:
    //IRremote.h
    #define DISH 5
    #define SHARP 6

    void sendDISH(unsigned long dataint nbits);
    void sendSharp(unsigned long dataint nbits);

    //IRremoteInt.h
    #define SHARP_BIT_MARK 245
    #define SHARP_ONE_SPACE 1805
    #define SHARP_ZERO_SPACE 795
    #define SHARP_GAP 600000
    #define SHARP_TOGGLE_MASK 0x3FF
    #define SHARP_RPT_SPACE 3000

    #define DISH_HDR_MARK 400
    #define DISH_HDR_SPACE 6100
    #define DISH_BIT_MARK 400
    #define DISH_ONE_SPACE 1700
    #define DISH_ZERO_SPACE 2800
    #define DISH_RPT_SPACE 6200
    #define DISH_TOP_BIT 0x8000

    #define SHARP_BITS 15
    #define DISH_BITS 16

    //IRremote.cpp
    void IRsend::sendSharp(unsigned long dataint nbits) {
     
    unsigned long invertdata data SHARP_TOGGLE_MASK;
     
    enableIROut(38);
     for (
    int i 0nbitsi++) {
     if (
    data 0x4000) {
     
    mark(SHARP_BIT_MARK);
     
    space(SHARP_ONE_SPACE);
     } 
     else {
     
    mark(SHARP_BIT_MARK);
     
    space(SHARP_ZERO_SPACE);

     }
     
    data <<= 1;
     }

     
    mark(SHARP_BIT_MARK);
     
    space(SHARP_ZERO_SPACE);
     
    delay(46);
     for (
    int i 0nbitsi++) {
     if (
    invertdata 0x4000) {
     
    mark(SHARP_BIT_MARK);
     
    space(SHARP_ONE_SPACE);
     } 
     else {
     
    mark(SHARP_BIT_MARK);
     
    space(SHARP_ZERO_SPACE);

     }
     
    invertdata <<= 1;
     }
     
    mark(SHARP_BIT_MARK);
     
    space(SHARP_ZERO_SPACE);
     
    delay(46);
    }


    void IRsend::sendDISH(unsigned long dataint nbits)
    {
     
    enableIROut(56);
     
    mark(DISH_HDR_MARK);
     
    space(DISH_HDR_SPACE);
     for (
    int i 0nbitsi++) {
     if (
    data DISH_TOP_BIT) {
     
    mark(DISH_BIT_MARK);
     
    space(DISH_ONE_SPACE);
     } 
     else {
     
    mark(DISH_BIT_MARK);
     
    space(DISH_ZERO_SPACE);
     }
     
    data <<= 1;
     }

    Последний раз редактировалось Chip; 23.05.2011 в 23:19.

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Метки этой темы

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •