Good evening everyone,
I am trying to build a b4xlib that will log values to the Serial Oscilloscope as described in this thread:
www.b4x.com
Here is the code:
I know I could have done it a lot easier but for the shake of practicing I choosed this way.
I get this error for a reason that I am not able to see right now. Can anyone see it? Here is the error:
I am trying to build a b4xlib that will log values to the Serial Oscilloscope as described in this thread:
Serial oscilloscope
Here is something pretty handy some times: https://x-io.co.uk/serial-oscilloscope/ (11-3-2021) You can use it with this module in B4R: https://www.b4x.com/android/forum/threads/module-serial-oscilloscope.128394/
Here is the code:
SerialOscilloscope Code Module:
Sub Process_Globals
'These global variables will be declared once when the application starts.
'Public variables can be accessed from all modules.
Dim NumOfCHs As Int
End Sub
Sub Initialize(NumOfChannelsUpTo6 As Int)
NumOfCHs = NumOfChannelsUpTo6
RunNative("stpanalogpins", NumOfChannelsUpTo6)
End Sub
Sub LogChannels()
RunNative("chlg", Null)
End Sub
#if c
#include <stdlib.h> // div, div_t
void stpanalogpins(B4R::Object* o) {
int numchan = b4r_serialoscilloscope::_numofchs;
// Enable pull-ups to avoid floating inputs
if (numchan>=1) digitalWrite(A0, HIGH);
if (numchan>=2) digitalWrite(A1, HIGH);
if (numchan>=3) digitalWrite(A2, HIGH);
if (numchan>=4) digitalWrite(A3, HIGH);
if (numchan>=5) digitalWrite(A6, HIGH);
if (numchan=6) digitalWrite(A7, HIGH);
// Init serial
// Serial.begin(115200);
}
void chlg(B4R::Object* o){
int numChans = b4r_serialoscilloscope::_numofchs;
// Print ADC results for active channels
b4r_serialoscilloscope::pnt(analogRead(A0));
if(numChans > 1) {
Serial.write(',');
b4r_serialoscilloscope::pnt(analogRead(A1));
}
if(numChans > 2) {
Serial.write(',');
b4r_serialoscilloscope::pnt(analogRead(A2));
}
if(numChans > 3) {
Serial.write(',');
b4r_serialoscilloscope::pnt(analogRead(A3));
}
if(numChans > 4) {
Serial.write(',');
b4r_serialoscilloscope::pnt(analogRead(A6));
}
if(numChans > 5) {
Serial.write(',');
b4r_serialoscilloscope::pnt(analogRead(A7));
}
Serial.write('\r'); // print new line
}
// Fast int to ASCII conversion
void pnt(int i) {
static const char asciiDigits[10] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' };
div_t n;
int print = 0;
if(i < 0) {
Serial.write('-');
i = -i;
}
if(i >= 10000) {
n = div(i, 10000);
Serial.write(asciiDigits[n.quot]);
i = n.rem;
print = 1;
}
if(i >= 1000 || print) {
n = div(i, 1000);
Serial.write(asciiDigits[n.quot]);
i = n.rem;
print = 1;
}
if(i >= 100 || print) {
n = div(i, 100);
Serial.write(asciiDigits[n.quot]);
i = n.rem;
print = 1;
}
if(i >= 10 || print) {
n = div(i, 10);
Serial.write(asciiDigits[n.quot]);
i = n.rem;
}
Serial.write(asciiDigits[i]);
}
#End If
I know I could have done it a lot easier but for the shake of practicing I choosed this way.
I get this error for a reason that I am not able to see right now. Can anyone see it? Here is the error:
Using previously compiled file: C:\B4X\MyCode\B4R\MyCode\EMPTYB~1\Objects\bin\sketch\B4RArduino.cpp.o
Using previously compiled file: C:\B4X\MyCode\B4R\MyCode\EMPTYB~1\Objects\bin\sketch\B4RCore.cpp.o
Using previously compiled file: C:\B4X\MyCode\B4R\MyCode\EMPTYB~1\Objects\bin\sketch\B4RStream.cpp.o
Using previously compiled file: C:\B4X\MyCode\B4R\MyCode\EMPTYB~1\Objects\bin\sketch\b4r_main.cpp.o
"C:\\B4X\\Tools\\B4R\\arduino-1.8.13\\hardware\\tools\\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -MMD -flto -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10813 -DARDUINO_AVR_NANO -DARDUINO_ARCH_AVR "-IC:\\B4X\\Tools\\B4R\\arduino-1.8.13\\hardware\\arduino\\avr\\cores\\arduino" "-IC:\\B4X\\Tools\\B4R\\arduino-1.8.13\\hardware\\arduino\\avr\\variants\\eightanaloginputs" "C:\\B4X\\MyCode\\B4R\\MyCode\\EMPTYB~1\\Objects\\bin\\sketch\\b4r_serialoscilloscope.cpp" -o "C:\\B4X\\MyCode\\B4R\\MyCode\\EMPTYB~1\\Objects\\bin\\sketch\\b4r_serialoscilloscope.cpp.o"
"C:\\B4X\\Tools\\B4R\\arduino-1.8.13\\hardware\\tools\\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -MMD -flto -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10813 -DARDUINO_AVR_NANO -DARDUINO_ARCH_AVR "-IC:\\B4X\\Tools\\B4R\\arduino-1.8.13\\hardware\\arduino\\avr\\cores\\arduino" "-IC:\\B4X\\Tools\\B4R\\arduino-1.8.13\\hardware\\arduino\\avr\\variants\\eightanaloginputs" "C:\\B4X\\MyCode\\B4R\\MyCode\\EMPTYB~1\\Objects\\bin\\sketch\\src.ino.cpp" -o "C:\\B4X\\MyCode\\B4R\\MyCode\\EMPTYB~1\\Objects\\bin\\sketch\\src.ino.cpp.o"
C:\B4X\MyCode\B4R\MyCode\EMPTYB~1\Objects\bin\sketch\b4r_serialoscilloscope.cpp: In function 'void chlg(B4R::Object*)':
b4r_serialoscilloscope.cpp:31:29: error: 'pnt' is not a member of 'b4r_serialoscilloscope'
b4r_serialoscilloscope: nt(analogRead(A0));
^~~
b4r_serialoscilloscope.cpp:34:33: error: 'pnt' is not a member of 'b4r_serialoscilloscope'
b4r_serialoscilloscope: nt(analogRead(A1));
^~~
b4r_serialoscilloscope.cpp:38:33: error: 'pnt' is not a member of 'b4r_serialoscilloscope'
b4r_serialoscilloscope: nt(analogRead(A2));
^~~
b4r_serialoscilloscope.cpp:42:33: error: 'pnt' is not a member of 'b4r_serialoscilloscope'
b4r_serialoscilloscope: nt(analogRead(A3));
^~~
b4r_serialoscilloscope.cpp:46:33: error: 'pnt' is not a member of 'b4r_serialoscilloscope'
b4r_serialoscilloscope: nt(analogRead(A6));
^~~
b4r_serialoscilloscope.cpp:50:33: error: 'pnt' is not a member of 'b4r_serialoscilloscope'
b4r_serialoscilloscope: nt(analogRead(A7));
^~~
exit status 1
DEBUG StatusLogger Stopping LoggerContext[name=1e6f5c3, org.apache.logging.log4j.core.LoggerContext@1afbe45]
DEBUG StatusLogger Stopping LoggerContext[name=1e6f5c3, org.apache.logging.log4j.core.LoggerContext@1afbe4
[/SPOILER]
Using previously compiled file: C:\B4X\MyCode\B4R\MyCode\EMPTYB~1\Objects\bin\sketch\B4RCore.cpp.o
Using previously compiled file: C:\B4X\MyCode\B4R\MyCode\EMPTYB~1\Objects\bin\sketch\B4RStream.cpp.o
Using previously compiled file: C:\B4X\MyCode\B4R\MyCode\EMPTYB~1\Objects\bin\sketch\b4r_main.cpp.o
"C:\\B4X\\Tools\\B4R\\arduino-1.8.13\\hardware\\tools\\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -MMD -flto -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10813 -DARDUINO_AVR_NANO -DARDUINO_ARCH_AVR "-IC:\\B4X\\Tools\\B4R\\arduino-1.8.13\\hardware\\arduino\\avr\\cores\\arduino" "-IC:\\B4X\\Tools\\B4R\\arduino-1.8.13\\hardware\\arduino\\avr\\variants\\eightanaloginputs" "C:\\B4X\\MyCode\\B4R\\MyCode\\EMPTYB~1\\Objects\\bin\\sketch\\b4r_serialoscilloscope.cpp" -o "C:\\B4X\\MyCode\\B4R\\MyCode\\EMPTYB~1\\Objects\\bin\\sketch\\b4r_serialoscilloscope.cpp.o"
"C:\\B4X\\Tools\\B4R\\arduino-1.8.13\\hardware\\tools\\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -MMD -flto -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10813 -DARDUINO_AVR_NANO -DARDUINO_ARCH_AVR "-IC:\\B4X\\Tools\\B4R\\arduino-1.8.13\\hardware\\arduino\\avr\\cores\\arduino" "-IC:\\B4X\\Tools\\B4R\\arduino-1.8.13\\hardware\\arduino\\avr\\variants\\eightanaloginputs" "C:\\B4X\\MyCode\\B4R\\MyCode\\EMPTYB~1\\Objects\\bin\\sketch\\src.ino.cpp" -o "C:\\B4X\\MyCode\\B4R\\MyCode\\EMPTYB~1\\Objects\\bin\\sketch\\src.ino.cpp.o"
C:\B4X\MyCode\B4R\MyCode\EMPTYB~1\Objects\bin\sketch\b4r_serialoscilloscope.cpp: In function 'void chlg(B4R::Object*)':
b4r_serialoscilloscope.cpp:31:29: error: 'pnt' is not a member of 'b4r_serialoscilloscope'
b4r_serialoscilloscope:
^~~
b4r_serialoscilloscope.cpp:34:33: error: 'pnt' is not a member of 'b4r_serialoscilloscope'
b4r_serialoscilloscope:
^~~
b4r_serialoscilloscope.cpp:38:33: error: 'pnt' is not a member of 'b4r_serialoscilloscope'
b4r_serialoscilloscope:
^~~
b4r_serialoscilloscope.cpp:42:33: error: 'pnt' is not a member of 'b4r_serialoscilloscope'
b4r_serialoscilloscope:
^~~
b4r_serialoscilloscope.cpp:46:33: error: 'pnt' is not a member of 'b4r_serialoscilloscope'
b4r_serialoscilloscope:
^~~
b4r_serialoscilloscope.cpp:50:33: error: 'pnt' is not a member of 'b4r_serialoscilloscope'
b4r_serialoscilloscope:
^~~
exit status 1
DEBUG StatusLogger Stopping LoggerContext[name=1e6f5c3, org.apache.logging.log4j.core.LoggerContext@1afbe45]
DEBUG StatusLogger Stopping LoggerContext[name=1e6f5c3, org.apache.logging.log4j.core.LoggerContext@1afbe4
[/SPOILER]