Changeset 8111 for lang/cplusplus

Show
Ignore:
Timestamp:
03/19/08 02:15:52 (5 years ago)
Author:
mootoh
Message:

lang/cplusplus/gainer++: implemented din for MODE_1.

Location:
lang/cplusplus/gainer++
Files:
2 modified

Legend:

Unmodified
Added
Removed
  • lang/cplusplus/gainer++/gainer-button.cc

    r8110 r8111  
    4242    std::cerr << "process_next_event" << std::endl; 
    4343    //gainer->process_next_event(); 
    44     gainer->peek_analog_inputs(); 
     44    //gainer->peek_analog_inputs(); 
     45    gainer->peek_digital_inputs(); 
    4546    usleep(100000); 
    4647    /* 
  • lang/cplusplus/gainer++/gainer.cc

    r8110 r8111  
    153153      on_released(); 
    154154      break; 
    155     case 'I': // analog_input 
     155    case 'I': { // analog_input 
     156      std::string::size_type ast(event.find('*')); 
     157      std::string nums(event.substr(1, ast-1)); 
     158      std::cout << nums << std::endl; 
    156159      for (int i(1); ; i++) { 
    157160        char ch(event[i]); 
     
    162165      } 
    163166      break; 
    164     case 'R': // digital input 
    165       for (int i(1); ; i++) { 
    166         char ch(event[i]); 
    167         if (isdigit(ch) or ('A' <= ch and 'F' >= ch)) 
    168           digital_inputs[i-1] = ch-'0'; 
    169         else 
    170           break; 
    171       } 
     167    } 
     168    case 'R': { // digital input 
     169      std::string::size_type ast(event.find('*')); 
     170      std::stringstream ss(event.substr(1, ast-1)); 
     171      int num; 
     172      ss >> std::hex >> num; 
     173      for (size_t i(0); i<digital_inputs.size(); i++) 
     174        digital_inputs[i] = num & (1<<i); 
    172175      break; 
     176    } 
    173177    default: 
    174178      break;