Het enige wat ik kan vinden in een andere library die niet direct wordt aangeroepen (misschien via een omweg oid) is dit:
Ik snap er geen drol van: je declareert een functie readLong en in die functie gebruik je gelijk readLong??
Edit:
Omweg idd, gevonden:
code:
1
2
3
4
| uint32_t NXShieldI2C::readLong (uint8_t location) { if (!m_protocol) return BaseI2CDevice::readLong( location ); else return SoftI2cMaster::readLong( location ); |
Ik snap er geen drol van: je declareert een functie readLong en in die functie gebruik je gelijk readLong??
Edit:
Omweg idd, gevonden:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
| uint8_t* BaseI2CDevice::readRegisters( uint8_t start_register, // start of the register range uint8_t bytes_to_read, // number of bytes to read (max 16 for lego devices) uint8_t* buffer, // (optional) user-supplied buffer uint8_t buffer_length, // (optional) length of user-supplied buffer bool clear_buffer) // should we zero out the buffer first? (optional) { if (!buffer) { buffer = _buffer; } if (!buffer_length) { buffer_length = BUFFER_LEN; } bytes_to_read = min(bytes_to_read, buffer_length); // avoid buffer overflow if (clear_buffer) { memset(buffer, 0, buffer_length); } // We write to the I2C device to tell it where we want to read from Wire.beginTransmission(_device_address); #if defined(ARDUINO) && ARDUINO >= 100 Wire.write(start_register); #else Wire.send(start_register); #endif //Wire.send(bytes_to_read); Wire.endTransmission(); // Now we can read the data from the device Wire.requestFrom(_device_address, bytes_to_read); for (uint8_t index = 0; Wire.available(); ++index) { #if defined(ARDUINO) && ARDUINO >= 100 buffer[index] = Wire.read(); #else buffer[index] = Wire.receive(); #endif } _write_error_code = Wire.endTransmission(); return buffer; } |
[ Voor 61% gewijzigd door almightyarjen op 05-07-2014 12:35 ]