Subversion Repositories HomeAutomation

Rev

Rev 1605 | Rev 1610 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | SVN | RSS feed

Rev 1605 Rev 1607
Line 326... Line 326...
326
}
326
}
327
 
327
 
328
std::string Protocol::DecodeUint(type::Bitset& bitset, unsigned int start_bit, unsigned int bit_length)
328
std::string Protocol::DecodeUint(type::Bitset& bitset, unsigned int start_bit, unsigned int bit_length)
329
{
329
{
330
    unsigned long raw_bit_value = bitset.Read(start_bit, bit_length);
330
    unsigned long raw_bit_value = bitset.Read(start_bit, bit_length);
-
 
331
   
-
 
332
    //LOG.Debug("DecodeUint: raw_bit_value=" + boost::lexical_cast<std::string>(raw_bit_value));
331
   
333
   
332
    return boost::lexical_cast<std::string>((unsigned int)raw_bit_value);
334
    return boost::lexical_cast<std::string>((unsigned int)raw_bit_value);
333
}
335
}
334
 
336
 
335
void Protocol::EncodeUint(type::Bitset& bitset, unsigned int start_bit, unsigned int bit_length, std::string value)
337
void Protocol::EncodeUint(type::Bitset& bitset, unsigned int start_bit, unsigned int bit_length, std::string value)
336
{
338
{
337
    unsigned long raw_bit_value = boost::lexical_cast<unsigned int>(value);
339
    unsigned long raw_bit_value = boost::lexical_cast<unsigned int>(value);
338
   
340
   
339
    bitset.Write(start_bit, bit_length, raw_bit_value);
341
    bitset.Write(start_bit, bit_length, raw_bit_value);
340
}
342
}
341
 
343
 
342
std::string Protocol::DecodeFloat(type::Bitset& bitset, unsigned int start_bit, unsigned int bit_length)
344
std::string Protocol::DecodeFloat(type::Bitset& bitset, unsigned int start_bit, unsigned int bit_length)
343
{
345
{
344
    float float_value = boost::lexical_cast<float>(this->DecodeInt(bitset, start_bit, bit_length)) / 64.0f;
346
    float float_value = boost::lexical_cast<float>(this->DecodeInt(bitset, start_bit, bit_length)) / 64.0f;
345
   
347
   
346
    return boost::lexical_cast<std::string>(float_value);
348
    return boost::lexical_cast<std::string>(float_value);
Line 366... Line 368...
366
    return value;
368
    return value;
367
}
369
}
368
 
370
 
369
void Protocol::EncodeAscii(type::Bitset& bitset, unsigned int start_bit, unsigned int bit_length, std::string value)
371
void Protocol::EncodeAscii(type::Bitset& bitset, unsigned int start_bit, unsigned int bit_length, std::string value)
370
{
372
{
-
 
373
    //LOG.Debug("EncodeAscii: " + value + ", length =" + boost::lexical_cast<std::string>(value.size()) + ", bit_length=" + boost::lexical_cast<std::string>(bit_length));
-
 
374
   
371
    for (unsigned int n = 0; n < bit_length; n += 8)
375
    for (unsigned int n = 0; n < bit_length; n += 8)
372
    {
376
    {
-
 
377
        if (n / 8 > value.size())
-
 
378
        {
-
 
379
            break;
-
 
380
        }
-
 
381
       
373
        bitset.Write(start_bit + n, 8, value[n / 8]);
382
        bitset.Write(start_bit + n, 8, value[n / 8]);
374
    }
383
    }
375
}
384
}
376
 
385
 
377
std::string Protocol::DecodeHexstring(type::Bitset& bitset, unsigned int start_bit, unsigned int bit_length)
386
std::string Protocol::DecodeHexstring(type::Bitset& bitset, unsigned int start_bit, unsigned int bit_length)