diff --git a/drv/b15f.cpp b/drv/b15f.cpp index 582b947..46a0fa0 100644 --- a/drv/b15f.cpp +++ b/drv/b15f.cpp @@ -19,6 +19,7 @@ void B15F::init() usart = open(SERIAL_DEVICE.c_str(), O_RDWR | O_NOCTTY | O_NDELAY); struct termios options; tcgetattr(usart, &options); + options.c_cflag = CS8 | CLOCAL | CREAD; options.c_iflag = IGNPAR; options.c_oflag = 0; options.c_lflag = 0; @@ -28,25 +29,28 @@ void B15F::init() tcflush(usart, TCIFLUSH); std::cout << "OK" << std::endl; + + delay(1); - // Verbindungstest muss dreimal erfolgreich sein - std::cout << PRE << "Teste Verbindung... " << std::flush; - for(uint8_t i = 0; i < 3; i++) + std::cout << PRE << "Teste Verbindung... " << std::flush; + uint8_t tries = 3; + while(tries--) { // verwerfe Daten, die µC noch hat discard(); if(!testConnection()) - throw DriverException("Verbindungstest fehlgeschlagen. Neueste Version im Einsatz?"); - } - std::cout << "OK" << std::endl; - - - std::cout << PRE << "Teste Integer Konvertierung... " << std::flush; - for(uint8_t i = 0; i < 3; i++) + continue; + if(!testIntConv()) - throw DriverException("Konvertierung fehlgeschlagen."); + continue; + + break; + } + if(tries == 0) + throw DriverException("Verbindungstest fehlgeschlagen. Neueste Version im Einsatz?"); std::cout << "OK" << std::endl; + } void B15F::reconnect() @@ -73,12 +77,14 @@ void B15F::reconnect() void B15F::discard(void) { + tcflush(usart, TCIFLUSH); // leere Puffer for(uint8_t i = 0; i < 8; i++) { writeByte(RQ_DISC); // sende discard Befehl (verwerfe input) - delay(1); - tcflush(usart, TCIFLUSH); // leere Puffer + delay(10); } + delay(100); + tcflush(usart, TCIFLUSH); // leere Puffer } bool B15F::testConnection() @@ -240,7 +246,7 @@ bool B15F::analogEingabeSequenz(uint8_t channel_a, uint16_t* buffer_a, uint32_t { buffer_a[offset_a + i] = readInt(); buffer_b[offset_b + i] = readInt(); - std::cout << "(" << i << ") " << buffer_a[offset_a + i] << " \t| " << buffer_b[offset_b + i] << std::endl; + //std::cout << "(" << i << ") " << buffer_a[offset_a + i] << " \t| " << buffer_b[offset_b + i] << std::endl; } aw = readByte(); diff --git a/drv/b15f.o b/drv/b15f.o index 6a2d547..fe7f7dd 100644 Binary files a/drv/b15f.o and b/drv/b15f.o differ diff --git a/gnuplotscript.gp b/gnuplotscript.gp new file mode 100644 index 0000000..8f3b0d1 --- /dev/null +++ b/gnuplotscript.gp @@ -0,0 +1,25 @@ +set margin 10,10 +unset key +set grid +set title '' +set xlabel 'UDrain [mV]' +set ylabel 'IDrain [mA]' +set xrange [0:5000] +set yrange [0:50] +set label at 2785,31 'UGS [Digit ] = 125' left +set label at 2663,28 'UGS [Digit ] = 150' left +set label at 2614,25 'UGS [Digit ] = 175' left +set label at 2541,18 'UGS [Digit ] = 200' left +set label at 2565,21 'UGS [Digit ] = 225' left +set label at 2468,13 'UGS [Digit ] = 250' left +set label at 2492,15 'UGS [Digit ] = 275' left +set label at 2443,11 'UGS [Digit ] = 300' left +set label at 2443,11 'UGS [Digit ] = 325' left +set label at 2394,8 'UGS [Digit ] = 350' left +set label at 2297,4 'UGS [Digit ] = 375' left +set label at 2297,4 'UGS [Digit ] = 400' left +set label at 2297,4 'UGS [Digit ] = 400' left +unset output +set terminal qt +unset output +plot "/tmp/tempfile0" using ($1*4.887586):($2*0.048876) binary format="%int16%int16" endian=big title 'UGS [Digit ] = 100' w l,"/tmp/tempfile1" using ($1*4.887586):($2*0.048876) binary format="%int16%int16" endian=big title 'UGS [Digit ] = 125' w l,"/tmp/tempfile2" using ($1*4.887586):($2*0.048876) binary format="%int16%int16" endian=big title 'UGS [Digit ] = 150' w l,"/tmp/tempfile3" using ($1*4.887586):($2*0.048876) binary format="%int16%int16" endian=big title 'UGS [Digit ] = 175' w l,"/tmp/tempfile4" using ($1*4.887586):($2*0.048876) binary format="%int16%int16" endian=big title 'UGS [Digit ] = 200' w l,"/tmp/tempfile5" using ($1*4.887586):($2*0.048876) binary format="%int16%int16" endian=big title 'UGS [Digit ] = 225' w l,"/tmp/tempfile6" using ($1*4.887586):($2*0.048876) binary format="%int16%int16" endian=big title 'UGS [Digit ] = 250' w l,"/tmp/tempfile7" using ($1*4.887586):($2*0.048876) binary format="%int16%int16" endian=big title 'UGS [Digit ] = 275' w l,"/tmp/tempfile8" using ($1*4.887586):($2*0.048876) binary format="%int16%int16" endian=big title 'UGS [Digit ] = 300' w l,"/tmp/tempfile9" using ($1*4.887586):($2*0.048876) binary format="%int16%int16" endian=big title 'UGS [Digit ] = 325' w l,"/tmp/tempfile10" using ($1*4.887586):($2*0.048876) binary format="%int16%int16" endian=big title 'UGS [Digit ] = 350' w l,"/tmp/tempfile11" using ($1*4.887586):($2*0.048876) binary format="%int16%int16" endian=big title 'UGS [Digit ] = 375' w l,"/tmp/tempfile12" using ($1*4.887586):($2*0.048876) binary format="%int16%int16" endian=big title 'UGS [Digit ] = 400' w l,"/tmp/tempfile13" using ($1*4.887586):($2*0.048876) binary format="%int16%int16" endian=big title 'UGS [Digit ] = 425' w l diff --git a/graph b/graph new file mode 100755 index 0000000..7ca5ed2 Binary files /dev/null and b/graph differ diff --git a/main b/main index 9ffffd5..1b8f4ad 100755 Binary files a/main and b/main differ diff --git a/main.cpp b/main.cpp index 7be05dc..f14fd10 100644 --- a/main.cpp +++ b/main.cpp @@ -19,7 +19,9 @@ int main() uint16_t ba[1024]; uint16_t bb[1024]; - drv.analogEingabeSequenz(1, &ba[0], 0, 0, &bb[0], 0, 1000, -10, 101); + drv.analogEingabeSequenz(1, &ba[0], 0, 0, &bb[0], 0, 1023, -1, 1023); + + system("./plotty --in graph"); std::cout << "Schluss." << std::endl; } diff --git a/main.o b/main.o index a000f65..b3c3644 100644 Binary files a/main.o and b/main.o differ diff --git a/plotty b/plotty new file mode 100755 index 0000000..042293e Binary files /dev/null and b/plotty differ