Interface class for the Max Botix ultrasonic range finder model 1210. It includes input methods for PWM, Analog, and Serial. A PwmIn class was created to allow the PWM input to be read. Now includes automatic range update via interrupts.
Diff: MB1210.cpp
- Revision:
- 1:b533b95e807a
- Parent:
- 0:3d969e0b4ca0
- Child:
- 2:997b4057c879
diff -r 3d969e0b4ca0 -r b533b95e807a MB1210.cpp --- a/MB1210.cpp Sun Aug 22 21:18:20 2010 +0000 +++ b/MB1210.cpp Mon Aug 23 01:12:57 2010 +0000 @@ -1,7 +1,7 @@ #include "MB1210.h" -MB1210::MB1210(PinName pw, PinName an, PinName tx, PinName rx) : - OperatingMode(0x00), UnitFactor(1), PwmScalingFactor(17014.5), AnalogScalingFactor(1024) +MB1210::MB1210(PinName pw, PinName an, PinName tx, PinName rx) : OperatingMode(0x00), + UnitFactor(1), PwmScalingFactor(17014.5), AnalogScalingFactor(1024), Range(0) { if (rx != NC) { @@ -105,28 +105,13 @@ case 2: if (SerialInput) { - if (SerialInput->readable()) + unsigned char i = 0; + while (SerialInput->readable() && !SerialInput->scanf("R%3d", &Range) && (i < 32)) { - Workspace[3] = 0; - do - { - Workspace[0] = SerialInput->getc(); - Workspace[3]++; - } while (SerialInput->readable() && (Workspace[0] != 'R') && (Workspace[3] < 5)); - for (unsigned char i = 0; i < 3; i++) - { - if (SerialInput->readable()) - { - Workspace[i] = SerialInput->getc(); - } - else - { - Workspace[i] = 0x00; - } - } - Workspace[3] = 0x00; - return atof(Workspace) * UnitFactor; + SerialInput->getc(); + i++; } + return (float)Range * UnitFactor; } else { @@ -142,25 +127,11 @@ { if (SerialInput) { - if (SerialInput->readable()) + unsigned char i = 0; + while (SerialInput->readable() && !SerialInput->scanf("R%3s", Buffer) && (i < 32)) { - Workspace[3] = 0; - do - { - Workspace[0] = SerialInput->getc(); - Workspace[3]++; - } while (SerialInput->readable() && (Workspace[0] != 'R') && (Workspace[3] < 5)); - for (unsigned char i = 0; i < 3; i++) - { - if (SerialInput->readable()) - { - Buffer[i] = SerialInput->getc(); - } - else - { - Buffer[i] = 0x00; - } - } + SerialInput->getc(); + i++; } } }