From 7a1efabe49149730ea3eb4ab2c8a3b87cf64a8bd Mon Sep 17 00:00:00 2001 From: Tristan Krause Date: Wed, 15 May 2019 16:35:47 +0200 Subject: [PATCH] zwischenstand --- driver/examples/pegel/gnuplotscript.gp | 13 ++ driver/examples/pegel/main.cpp | 201 ++++--------------------- driver/examples/pegel/test_plot | Bin 0 -> 4352 bytes driver/src/Makefile | 4 +- driver/src/drv/plottyfile.cpp | 2 +- 5 files changed, 50 insertions(+), 170 deletions(-) create mode 100644 driver/examples/pegel/gnuplotscript.gp create mode 100644 driver/examples/pegel/test_plot diff --git a/driver/examples/pegel/gnuplotscript.gp b/driver/examples/pegel/gnuplotscript.gp new file mode 100644 index 0000000..54829e1 --- /dev/null +++ b/driver/examples/pegel/gnuplotscript.gp @@ -0,0 +1,13 @@ +set margin 10,10 +unset key +set grid +set title '' +set xlabel 'U_{OUT} [V]' +set ylabel 'U_{IN} [V]' +set xrange [0:5] +set yrange [0:5] +set label at 5,5 ' [V] = 0' left +unset output +set terminal qt +unset output +plot "/tmp/tempfile0" using ($1*0.004888):($2*0.004888) binary format="%int16%int16" endian=big title ' [V] = 0' w l diff --git a/driver/examples/pegel/main.cpp b/driver/examples/pegel/main.cpp index 84e29b0..4a98e19 100644 --- a/driver/examples/pegel/main.cpp +++ b/driver/examples/pegel/main.cpp @@ -4,175 +4,40 @@ #include -void kennlinieErsterQuadrant() -{ - - B15F& drv = B15F::getInstance(); - PlottyFile pf; - - uint16_t ba[1024]; - uint16_t bb[1024]; - - const uint16_t sample_count = 1024; - const uint16_t delta = 1; - - const uint16_t u_gs_start = 440; - const uint16_t u_gs_delta = 20; - const uint16_t u_gs_end = 600; - - pf.setUnitX("V"); - pf.setUnitY("mA"); - pf.setUnitPara("V"); - pf.setDescX("U_{DS}"); - pf.setDescY("I_D"); - pf.setDescPara("U_{GS}"); - pf.setRefX(5); - pf.setRefY(50); - pf.setParaFirstCurve(u_gs_start); - pf.setParaStepWidth(u_gs_delta); - - uint8_t curve = 0; - - std::cout << "Erfasse Kennlinie erster Quadrant..." << std::endl << std::flush; - - for(uint16_t u_gs = u_gs_start; u_gs <= u_gs_end; u_gs += u_gs_delta) - { - drv.analogWrite1(u_gs); - - drv.analogSequence(0, &ba[0], 0, 1, &bb[0], 0, 0, delta, sample_count); - - for(uint16_t k = 0; k < sample_count; k++) - { - uint16_t i_d = ba[k] - bb[k]; - uint16_t u_ds = bb[k]; - pf.addDot(Dot(u_ds, i_d, curve)); - } - - std::cout << "\033[1K\r" << 1e2 * (u_gs - u_gs_start) / (u_gs_end - u_gs_start) << "%" << std::flush; - - curve++; - } - - std::cout << "\033[1K\r" << std::flush; - - // speichern und plotty starten - pf.writeToFile("test_plot"); - pf.startPlotty("test_plot"); -} - -void kennlinieZweiterQuadrant() -{ - B15F& drv = B15F::getInstance(); - PlottyFile pf; - - uint16_t ba[1024]; - uint16_t bb[1024]; - - const uint16_t sample_count = 1024; - const uint16_t delta = 1; - - const uint16_t u_gs_start = 300; - const uint16_t u_gs_delta = 25; - const uint16_t u_gs_end = 700; - - pf.setQuadrant(2); - pf.setUnitX("V"); - pf.setUnitY("mA"); - pf.setUnitPara("V"); - pf.setDescX("U_{GS}"); - pf.setDescY("I_D"); - pf.setDescPara("U_{DS}"); - pf.setRefX(5); - pf.setRefY(50); - pf.setParaFirstCurve(u_gs_start); - pf.setParaStepWidth(u_gs_delta); - - uint8_t curve = 0; - - std::cout << "Erfasse Kennlinie zweiter Quadrant..." << std::endl << std::flush; - - for(uint16_t u_gs = u_gs_start; u_gs <= u_gs_end; u_gs += u_gs_delta) - { - drv.analogWrite1(u_gs); - - drv.analogSequence(0, &ba[0], 0, 1, &bb[0], 0, 0, delta, sample_count); - - curve = 0; - for(uint16_t k = 0; k < sample_count; k++) - { - if(ba[k] > bb[k] && bb[k] % 50 == 0 && bb[k] != 0) - { - uint16_t i_d = ba[k] - bb[k]; - pf.addDot(Dot(u_gs, i_d, bb[k] / 50)); - } - curve++; - } - - std::cout << "\033[1K\r" << 1e2 * (u_gs - u_gs_start) / (u_gs_end - u_gs_start) << "%" << std::flush; - } - - std::cout << "\033[1K\r" << std::flush; - - // speichern und plotty starten - pf.writeToFile("test_plot"); - pf.startPlotty("test_plot"); -} - -void testFunktionen() -{ - B15F& drv = B15F::getInstance(); - - std::cout << "DIP-Switch: " << (int) drv.readDipSwitch() << std::endl; - - - drv.digitalWrite0(0xFF); - drv.analogWrite0(128); - std::cout << (int) drv.digitalRead0() << std::endl;; - std::cout << "adc: " << (int) drv.analogRead(4) << std::endl; - - drv.digitalWrite0(0x00); - drv.analogWrite0(0); - std::cout << (int) drv.digitalRead0() << std::endl;; - std::cout << "adc: " << (int) drv.analogRead(4) << std::endl; - - drv.digitalWrite0(0xFF); - drv.analogWrite0(255); - std::cout << (int) drv.digitalRead0() << std::endl; - std::cout << "adc: " << (int) drv.analogRead(4) << std::endl; - - - std::cout << "Kennlinie..." << std::endl; - uint16_t a[1024]; - uint16_t b[1024]; - drv.analogSequence(0, &a[0], 0, 1, &b[0], 0, 0, 1, 1024); - - /*for(uint16_t i= 0; i < sizeof(a) / sizeof(uint16_t); i++) - { - std::cout << (int) i << " : " << a[i] << " " << b[i] << std::endl; - }*/ - -} - int main() { - //testFunktionen(); - //kennlinieZweiterQuadrant(); - - B15F& drv = B15F::getInstance(); - while(1) - { - //uint8_t be0 = drv.digitalRead0(); - //uint8_t be1 = drv.digitalRead1(); - //uint8_t dsw = drv.readDipSwitch(); - drv.analogRead(0); - drv.analogRead(1); - drv.analogRead(2); - drv.analogRead(3); - drv.analogRead(4); - drv.analogRead(5); - drv.analogRead(6); - drv.analogRead(7); - } - std::cout << "Schluss." << std::endl; + B15F& drv = B15F::getInstance(); + PlottyFile pf; + + uint16_t ba[1024]; + uint16_t bb[1024]; + + const uint16_t sample_count = 1024; + const uint16_t delta = 1; + + pf.setUnitX("V"); + pf.setUnitY("V"); + pf.setUnitPara("V"); + pf.setDescX("U_{OUT}"); + pf.setDescY("U_{IN}"); + pf.setDescPara(""); + pf.setRefX(5); + pf.setRefY(5); + pf.setParaFirstCurve(0); + pf.setParaStepWidth(0); + + uint8_t curve = 0; + + + drv.analogSequence(0, &ba[0], 0, 1, &bb[0], 0, 0, delta, sample_count); + + for(uint16_t x = 0; x < sample_count * delta; x += delta) + { + pf.addDot(Dot(x, ba[x], curve)); + } + + // speichern und plotty starten + pf.writeToFile("test_plot"); + pf.startPlotty("test_plot"); } diff --git a/driver/examples/pegel/test_plot b/driver/examples/pegel/test_plot new file mode 100644 index 0000000000000000000000000000000000000000..d6217fdb269768987011bc2c22747f76e241dfa7 GIT binary patch literal 4352 zcmd7K1Jf7=5(eNe`I5%A(b%?av$1X4cB3{{8#`%i+qP}{p1HZZxz7E8o1JIh+1c5R zSE5Sw(rHUnFVmo5*&;y#0s;yL2_6t!1_V?K{m;;<*6UTiYL!0!ng3^7vfSU7|8@Jf zqklaN_wUF54;lC)AP7MTBpAW@i4cS&6rl-2Si%vW2t*_jk%>Z7q7j`K#3UB6i9=lC z5uXGkBoT@EnIt478OcdON>Y)UG^8aR>B&GwGLe}qWF;Hf$w5wXk()f^B_H`IKtT#o zm?9LV7{w_;NlHg4bfgoV=|We!(VZUjq!+#ELtpyQp8*VH5Q7=QP=+y_5sYLMqZz|k z#xb4={K`ZoF_|e$|__a*~4D;v7ZARiqM21Ea3=G1R@fN$V4G3(TGkAViJqk#33&6h))6%l8D6o zOcIikjO3&sC8HNAm8eV=s#1;W)SxE6P>b5sp)U2PPXij#h{iObDa~k33tG~O*0iB5 z?PyO2I?{>GbfGKV=uQuM(u>~op)dXD&j1E8h`|hDD8m@e2u3oB(Trg%;~38beq|z) zn9LNW@*BT1jp@u_CbO8$9Og2Q`7GcM{$wGGSj-ZZvW(@dU?r|rna*v|nDa)`qm;V8#A&IwL(iqo9oEay1S1uk-l%Ut0q*SO9N zZgPv;+~F?wxX%L~@`%Sg;VI8}&I?}hir2j1E$?{G2R`zN&wSx4-}ugtz#l;a2trT- z2}W>!A_O4`MQFkhmT-h80uhNsWTFt2XhbIlF^NTN;t-d3#3um>Nkn3PCJ9MNMsiY+ zl2oK74QWY7dNPoaOk^etS;@0trU*qTMsZ3|l2VkW3}q=t zc`8tmN>ru_RjEdGYEYA3s6}n+P?vhtrvVLVL}QxJlx8%i1ubbsYueD3cC@Dh9qB}8 zy3mzwbf*VB=|yk)(3gJnX8;2k#9)Rnlwk~K1S1*6XvQ#>ag1jIzcP_YOlAsG`HkP1 z#&l*dlUdAW4s)5ud=~Hrf3lE8EM^HyS;lf!u##1*W({ju$9n!^0~^`IX11`EZER-; zJK4o<_OO?I?B@UnImBU(aFk;l=L9D?#c9rPmUEov0vEZ&Wv+0QYh33BH@U@a?r@iT z+~)xgdBkI$@RVmf=LIi$#cSU1mUq1810VUsXTI>2Z+z!R;E%unf)JEIf)Sjb2ti0f z5t=ZBB^=?2Ktv)DnJ7dh8qtYCOkxq6IK(9$@ku~J5|NmnNkUSRk(?ByBo(PiLt4_2 zo(yCp6Pd|ERP^DMC?-QJfN#q!gtoLs`mEo(fc?5|yb! zRjN^)8r0+$YEhdy)TJKvX+T37(U>MQr5Vj>K}%ZEnl`kh9qs8rM>^4&E_9_E-RVJ3 zdeNIc^ravD8NfgWF_<9?Wf;R5!AM3inlX%J9OIe5uS{eTlbOO)e&cthF`XIAWEQiT z!(8Sup9TEEpDbh%i&?@_ma&`_tYj6dS;Jb^v7W!!z(zK)nJsK(8{65zPIj@IJ?v#4 z`#Hct4snS|UJKW_S_j$lW9`Tqb gJmneBdBICw@tQZhqW}N^ literal 0 HcmV?d00001 diff --git a/driver/src/Makefile b/driver/src/Makefile index f3a2495..903df83 100644 --- a/driver/src/Makefile +++ b/driver/src/Makefile @@ -9,7 +9,8 @@ COMPILER_PATH = g++ # Options LIB_DRV = ../lib/libb15fdrv.so LIB_PATH = /usr/lib/ -INCLUDE_PATH = /usr/include/b15f +INCLUDE_PATH = /usr/include/b15f/ +BIN_PATH = /usr/bin/ OBJ_MAIN = main.o OUT_CLI = ../bin/cli.elf OBJ_CLI = cli.o @@ -35,6 +36,7 @@ install: drv cp $(LIB_DRV) $(LIB_PATH) mkdir -p $(INCLUDE_PATH) cp drv/*.h $(INCLUDE_PATH) + cp plotty $(BIN_PATH) help: @echo "This Makefile compiles the b15f driver lib and command line interface (CLI):" diff --git a/driver/src/drv/plottyfile.cpp b/driver/src/drv/plottyfile.cpp index a2d3d5a..1f2b955 100644 --- a/driver/src/drv/plottyfile.cpp +++ b/driver/src/drv/plottyfile.cpp @@ -192,7 +192,7 @@ void PlottyFile::writeToFile(std::string filename) void PlottyFile::startPlotty(std::string filename) { - int code = system(("./plotty --in " + filename).c_str()); + int code = system(("plotty --in " + filename).c_str()); if(code) throw std::runtime_error("Fehler beim Aufruf von plotty"); }