mirror of
https://github.com/felis/USB_Host_Shield_2.0.git
synced 2024-03-22 11:31:26 +01:00
Added ability to print negative numbers
This commit is contained in:
parent
4e10fd3046
commit
8f7d93896e
2 changed files with 39 additions and 12 deletions
35
SPP.cpp
35
SPP.cpp
|
@ -783,7 +783,12 @@ void SPP::println(void) {
|
||||||
}
|
}
|
||||||
|
|
||||||
/* These must be used to print numbers */
|
/* These must be used to print numbers */
|
||||||
void SPP::printNumber(uint16_t n) {
|
void SPP::printNumber(int16_t n) {
|
||||||
|
bool negative = false;
|
||||||
|
if(n < 0) {
|
||||||
|
negative = true;
|
||||||
|
n = -n;
|
||||||
|
}
|
||||||
uint16_t temp = n;
|
uint16_t temp = n;
|
||||||
uint8_t digits = 0;
|
uint8_t digits = 0;
|
||||||
while (temp) {
|
while (temp) {
|
||||||
|
@ -793,15 +798,27 @@ void SPP::printNumber(uint16_t n) {
|
||||||
if(digits == 0)
|
if(digits == 0)
|
||||||
print("0");
|
print("0");
|
||||||
else {
|
else {
|
||||||
uint8_t buf[digits];
|
uint8_t buf[digits+1]; // Add one extra in case it is negative
|
||||||
for(uint8_t i = 1; i < digits+1; i++) {
|
for(uint8_t i = 1; i < digits+1; i++) {
|
||||||
|
if(negative)
|
||||||
|
buf[digits-i+1] = n%10 + '0'; // Get number and convert to ASCII Character
|
||||||
|
else
|
||||||
buf[digits-i] = n%10 + '0'; // Get number and convert to ASCII Character
|
buf[digits-i] = n%10 + '0'; // Get number and convert to ASCII Character
|
||||||
n /= 10;
|
n /= 10;
|
||||||
}
|
}
|
||||||
|
if(negative) {
|
||||||
|
buf[0] = '-';
|
||||||
|
print(buf,digits+1);
|
||||||
|
} else
|
||||||
print(buf,digits);
|
print(buf,digits);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
void SPP::printNumberln(uint16_t n) {
|
void SPP::printNumberln(int16_t n) {
|
||||||
|
bool negative = false;
|
||||||
|
if(n < 0) {
|
||||||
|
negative = true;
|
||||||
|
n = -n;
|
||||||
|
}
|
||||||
uint16_t temp = n;
|
uint16_t temp = n;
|
||||||
uint8_t digits = 0;
|
uint8_t digits = 0;
|
||||||
while (temp) {
|
while (temp) {
|
||||||
|
@ -811,16 +828,26 @@ void SPP::printNumberln(uint16_t n) {
|
||||||
if(digits == 0)
|
if(digits == 0)
|
||||||
print("0\r\n");
|
print("0\r\n");
|
||||||
else {
|
else {
|
||||||
uint8_t buf[digits+2];
|
uint8_t buf[digits+3]; // Add one extra in case it is negative
|
||||||
for(uint8_t i = 1; i < digits+1; i++) {
|
for(uint8_t i = 1; i < digits+1; i++) {
|
||||||
|
if(negative)
|
||||||
|
buf[digits-i+1] = n%10 + '0'; // Get number and convert to ASCII Character
|
||||||
|
else
|
||||||
buf[digits-i] = n%10 + '0'; // Get number and convert to ASCII Character
|
buf[digits-i] = n%10 + '0'; // Get number and convert to ASCII Character
|
||||||
n /= 10;
|
n /= 10;
|
||||||
}
|
}
|
||||||
|
if(negative) {
|
||||||
|
buf[0] = '-';
|
||||||
|
buf[digits+1] = '\r';
|
||||||
|
buf[digits+2] = '\n';
|
||||||
|
print(buf,digits+3);
|
||||||
|
} else {
|
||||||
buf[digits] = '\r';
|
buf[digits] = '\r';
|
||||||
buf[digits+1] = '\n';
|
buf[digits+1] = '\n';
|
||||||
print(buf,digits+2);
|
print(buf,digits+2);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
uint8_t SPP::read() {
|
uint8_t SPP::read() {
|
||||||
if(rfcommAvailable == 0) // Don't read if there is nothing in the buffer
|
if(rfcommAvailable == 0) // Don't read if there is nothing in the buffer
|
||||||
|
|
4
SPP.h
4
SPP.h
|
@ -115,8 +115,8 @@ public:
|
||||||
void println(const __FlashStringHelper *); // Include newline and carriage return
|
void println(const __FlashStringHelper *); // Include newline and carriage return
|
||||||
void println(void); // Use this to print newline and carriage return
|
void println(void); // Use this to print newline and carriage return
|
||||||
|
|
||||||
void printNumber(uint16_t n); // These must be used to print numbers
|
void printNumber(int16_t n); // These must be used to print numbers
|
||||||
void printNumberln(uint16_t n); // This will include newline and carriage return
|
void printNumberln(int16_t n); // This will include newline and carriage return
|
||||||
|
|
||||||
uint8_t available() { return rfcommAvailable; }; // Get the bytes waiting to be read
|
uint8_t available() { return rfcommAvailable; }; // Get the bytes waiting to be read
|
||||||
uint8_t read(); // Used to read the buffer
|
uint8_t read(); // Used to read the buffer
|
||||||
|
|
Loading…
Reference in a new issue