@@ -25,6 +25,19 @@ color cor[]={color(255, 0, 0), color(0, 255, 0), color(0, 0, 255), color(255,255
25
25
26
26
import processing.serial.* ;
27
27
28
+ /*
29
+ 08-Jun-2017 - output file "dados.txt" when click button
30
+ t (ms)<tab>ch0 (mV)<tab>ch1 (mV)
31
+ 0<tab>1215<tab>123
32
+ 1<tab>2123<tab>2
33
+ 2<tab>2350<tab>350
34
+ */
35
+ PrintWriter output;
36
+ boolean outputOpen= false ;
37
+ Botao save;
38
+ int qSave= 0 ;
39
+
40
+
28
41
// configuração dos objetos
29
42
Serial port;
30
43
Com com;
@@ -97,8 +110,10 @@ void setup() {
97
110
marg1= tela. x+ tela. w+ 10 ;
98
111
marg2= marg1+ 200 ;
99
112
100
- com= new Com (port, tela. x+ tela. w- 175 , tela. y- 30 , 175 , 20 );
101
-
113
+ // 16-Jun-2017 serial port names are too long in Mac - Roman Random
114
+ com= new Com (port, tela. x+ tela. w- 250 , 5 , 250 , 55 );
115
+ // com=new Com(port, tela.x+tela.w-175, tela.y-30, 175, 20);
116
+
102
117
// XYZ=new Botao("XYZ", marg2, tela.y, 45, 20);
103
118
// XYZy=tela.y+5*Q;
104
119
// for (int k=0; k<3;k++){
@@ -137,6 +152,10 @@ void setup() {
137
152
grafDif= new CheckBox (" ver" ,calcFreq. x+ calcFreq. w,calcFreq. y,15 );
138
153
// ruido=new Dial(escLinear, altMove, !nInt, fmt, "ruido", "V", 0, 0, 2, calcFreq.x+20, calcFreq.y+17, 100, 20);
139
154
155
+ // 08-jun-2017 - button to save data in data.txt
156
+ save= new Botao (" salvar datax.txt" ,calcFreq. x,calcFreq. y+ calcFreq. h+ 5 ,150 ,20 );
157
+
158
+
140
159
// medidor de resistor/capacitor
141
160
pnlRC= new Painel (" " , tela. x, tela. y+ tela. h+ 10 , 125 , 40 );
142
161
RC = new CheckBox (" medir res./cap." , pnlRC. x, pnlRC. y, 15 );
@@ -168,7 +187,7 @@ void draw() {
168
187
background (100 );
169
188
fill (0 , 255 , 255 );
170
189
textAlign (LEFT , TOP );
171
- textSize (24 );
190
+ textSize (18 );
172
191
text (" BegOscopio " + versao, tela. x, 12 );
173
192
fill (0 );
174
193
textSize (12 );
@@ -199,6 +218,7 @@ void draw() {
199
218
calcFreq. display();
200
219
grafDif. display();
201
220
// ruido.display();
221
+ save. display();
202
222
com. display();
203
223
resetEixos. display();
204
224
resetMedir. display();
@@ -387,7 +407,8 @@ void mouseClicked() {
387
407
com. conectado= false ;
388
408
com. erro= true ;
389
409
}
390
- if (com. conectado){
410
+
411
+ if (com. conectado){ // if connected start default values
391
412
// initProgram();
392
413
for (int k= 0 ;k< 4 ;k++ ){
393
414
canal[k]. chN. clicado= true ;
@@ -403,6 +424,7 @@ void mouseClicked() {
403
424
println (" variasAmostra.clicado=" ,variasAmostras. clicado);
404
425
405
426
}
427
+
406
428
} else if (r== - 1 ) { // retornou -1 então fechar serial
407
429
port. stop();
408
430
com. conectado= false ;
@@ -549,6 +571,70 @@ void mouseClicked() {
549
571
verPontos. mouseClicado();
550
572
calcFreq. mouseClicado();
551
573
grafDif. mouseClicado();
574
+
575
+ // 08-Jun-2017 write data to file
576
+ if (save. mouseClicado()){
577
+ // 14-Jun-2017 save fluxo or save memory
578
+ // println("fluxoContinuo.clicado=",fluxoContinuo.clicado);
579
+ if (fluxoContinuo. clicado){
580
+ if (outputOpen== false ){ // não está gravando, então iniciar a gravação
581
+ // println("outputOpen==false => ",outputOpen);
582
+ String fileName = " dataf" + nf (year (),4 )+ nf (month (),2 )+ nf (day (),2 )+ nf (hour (),2 )+ nf (minute (),2 )+ nf (second (),2 )+ " .txt" ;
583
+ output= createWriter (fileName);
584
+ outputOpen= true ;
585
+ save. tex= " salvando" ;
586
+ // cabeçalho
587
+ // output.println("BegOscopio v"+versao+" "+nf(year())+"-"+nf(month())+"-"+nf(day())+" "+nf(hour())+":"+nf(minute())+":"+nf(second()));
588
+ output. print(" dt(" );output. print(dt. v. printV());output. print(dt. unidade);output. print(" )" );
589
+ for (int k= 0 ; k< 4 ; k++ ){
590
+ if (canal[k]. chN. clicado){
591
+ output. print(' \t ' );output. print(" ch" );output. print(k);output. print(" (mV)" );
592
+ }
593
+ }
594
+ output. println();
595
+ qSave= 0 ;
596
+ // ao entrar cada dado no fluxo gravar em output.print()
597
+ // gravar na rotina de entrada
598
+ } else { // save já está gravando, então parar a gravação
599
+ // println("outputOpen==true => ",outputOpen);
600
+ output. close();
601
+ outputOpen= false ;
602
+ qSave= 1 ;
603
+ if (qSave> 10 ) {qSave= 1 ;}
604
+ save. tex= " salvar datax.txt" + " -" + qSave;
605
+ save. clicado= false ;
606
+ }
607
+ } else {
608
+ String fileName = " data" + nf (year (),4 )+ nf (month (),2 )+ nf (day (),2 )+ nf (hour (),2 )+ nf (minute (),2 )+ nf (second (),2 )+ " .txt" ;
609
+ output= createWriter (fileName);
610
+ // cabeçalho
611
+ // output.println("BegOscopio v"+versao+" "+nf(year())+"-"+nf(month())+"-"+nf(day())+" "+nf(hour())+":"+nf(minute())+":"+nf(second()));
612
+ output. print(" dt(" );output. print(dt. v. printV());output. print(dt. unidade);output. print(" )" );
613
+ for (int k= 0 ; k< 4 ; k++ ){
614
+ if (canal[k]. chN. clicado){
615
+ output. print(' \t ' );output. print(" ch" );output. print(k);output. print(" (mV)" );
616
+ }
617
+ }
618
+ output. println();
619
+ // dados
620
+ float f= 5000.0 / 1023.0 ;
621
+ for (int k2= 0 ; k2< q. v. v;k2++ ){
622
+ output. print(k2);
623
+ for (int k= 0 ; k< 4 ; k++ ) {
624
+ if (canal[k]. chN. clicado){
625
+ output. print(' \t ' );output. print(int (canal[k]. v[k2]* f));
626
+ }
627
+ }
628
+ output. println();
629
+ }
630
+
631
+ output. close();
632
+ qSave+= 1 ;
633
+ if (qSave> 10 ) {qSave= 1 ;}
634
+ save. tex= " salvar datax.txt" + " -" + qSave;
635
+ save. clicado= false ;
636
+ }
637
+ }
552
638
// ruido.mouseClicado();
553
639
554
640
// se clicou em dt ou q então enviar comando para Arduino e ajustar tela
@@ -577,6 +663,9 @@ void mouseClicked() {
577
663
if (umaAmostra. mouseClicado()) { // receber apenas Uma Amostra
578
664
variasAmostras. clicado= false ;
579
665
fluxoContinuo. clicado= false ;
666
+ if (outputOpen) {
667
+ fecharDados();
668
+ }
580
669
if (com. conectado) {
581
670
port. write(" 1" );
582
671
}
@@ -590,7 +679,7 @@ void mouseClicked() {
590
679
break ;
591
680
}
592
681
}
593
- println (" k2=" ,k2);
682
+ // println("k2=",k2);
594
683
595
684
if (k2>= 0 && k2<= 3 ){
596
685
pnlAmostra. piscar= true ;
@@ -604,6 +693,9 @@ void mouseClicked() {
604
693
if (variasAmostras. mouseClicado()) {
605
694
umaAmostra. clicado= false ;
606
695
fluxoContinuo. clicado= false ;
696
+ if (outputOpen) {
697
+ fecharDados();
698
+ }
607
699
if (com. conectado) {
608
700
if (variasAmostras. clicado) {
609
701
port. write(" vo" );
@@ -623,6 +715,9 @@ void mouseClicked() {
623
715
624
716
} else {
625
717
port. write(" fx" );
718
+ if (outputOpen){
719
+ fecharDados();
720
+ }
626
721
}
627
722
} else {
628
723
fluxoContinuo. clicado= false ;
@@ -823,6 +918,16 @@ void keyReleased(){
823
918
keyPressed = false ;
824
919
}
825
920
921
+
922
+ void fecharDados (){
923
+ output. close();
924
+ outputOpen= false ;
925
+ if (qSave> 10 ) {qSave= 1 ;}
926
+ save. tex= " salvar datax.txt" + " -" + qSave;
927
+ save. clicado= false ;
928
+ }
929
+
930
+
826
931
/* ==========================================
827
932
Comando enviados para o Arduino
828
933
========================================== */
@@ -895,6 +1000,29 @@ void serialEvent(Serial p) {
895
1000
dtReal. setV(float (tex2[1 ]));
896
1001
if (dtReal. v- dt. v. v> 1.1 * dt. v. v){ dtErro= true ;} else {dtErro= false ;}
897
1002
1003
+ // salvar em arquivo
1004
+ if (outputOpen) {
1005
+ float f= 5000.0 / 1023.0 ;
1006
+ // for (int k2=0; k2<q.v.v;k2++){
1007
+ int k2= int (q. v. v- 1 );
1008
+ output. print(qSave);
1009
+ qSave+= 1 ;
1010
+ for (int k= 0 ; k< 4 ; k++ ) {
1011
+ if (canal[k]. chN. clicado){
1012
+ output. print(' \t ' );output. print(int (canal[k]. v[k2]* f));
1013
+ }
1014
+ }
1015
+ output. println();
1016
+ if (qSave % 100 == 0 ) { // de 100 em 100
1017
+ save. tex= " salvando " + nf (qSave);
1018
+ output. flush();
1019
+ }
1020
+ // }
1021
+ }
1022
+
1023
+ // println("cmd=",cmd," val=",val," dtReal=",dtReal.printV());
1024
+
1025
+
898
1026
} else if (cmd. equals(" chq" )) { // entra qtd e quais canais serão recebidos
899
1027
int v[]= int (splitTokens (val));
900
1028
// voltar // println("========================");
0 commit comments