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 ]



