Skip to content

Commit c1782e6

Browse files
committed
fixing dynamic-qtd bug
1 parent 192189e commit c1782e6

File tree

2 files changed

+57
-31
lines changed

2 files changed

+57
-31
lines changed

arduino/oscilloscope_arduino/oscilloscope_arduino.ino

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ char unidade='m'; // unidade: m=milisegundo, u=microsegundo
7979
// 1 canal deve dar 120us
8080

8181
boolean varias=false; // v = varias
82-
boolean uma=true; // u = uma
82+
boolean uma=false; // u = uma
8383
boolean fluxo=false; // f = fluxo de dados (envia cada leitura sem guardar na memoria)
8484
// velocidade limitada pela serial 115200
8585
unsigned long dtReal, tIni, tFim; // contador de final de tempo para o fluxo
@@ -207,8 +207,8 @@ void lerSerial(){
207207
if (k>=1 && k<=qmax) {
208208
q=k;
209209
}
210-
calcBuffer();
211-
// Serial.print("=> q="); Serial.println(q);
210+
//calcBuffer(); //não precisa pois será usado o qmax
211+
Serial.print("=> q="); Serial.println(q);
212212
break;
213213
case 'c': //cnm : n=0-3, m=(o)ativa/(x)desativa canal n exemplo: c0x, c2o
214214
delay(100);
@@ -396,18 +396,19 @@ void calcBuffer(){
396396
q=qmax;
397397
}
398398
//Serial.print("q=408/chq=");Serial.print("408/");Serial.print(chq);Serial.print("=");Serial.println(q);
399+
// qtdCanais-qmax (chq-qmax) (4-100) (3-130) (2-200) (1-400)
399400
int chInit=0;
400401
for (int k=0; k<4; k++){
401402
if (Ch[k]) {
402403
chi[k]=chInit;
403-
chInit+=q;
404+
chInit+=qmax;
404405
}
405406
}
406407

407-
Serial.print("chq="); Serial.print(chq); Serial.print(" q="); Serial.print(q); Serial.print(" qmax="); Serial.println(qmax);
408-
for (int k=0; k<4; k++){
409-
Serial.print("k=");Serial.print(k); Serial.print(" chi[k]="); Serial.println(chi[k]);
410-
}
408+
// Serial.print("chq="); Serial.print(chq); Serial.print(" q="); Serial.print(q); Serial.print(" qmax="); Serial.println(qmax);
409+
// for (int k=0; k<4; k++){
410+
// Serial.print("k=");Serial.print(k); Serial.print(" chi[k]="); Serial.println(chi[k]);
411+
// }
411412

412413
}
413414

@@ -593,12 +594,13 @@ void lerEnviar(){
593594
if (Ch[3]) {Serial.print(vb[chi[3]+k]); Serial.print("\t");}
594595
Serial.println("");
595596

597+
/*
596598
if (Ch[0]) {Serial.print(chi[0]+k); Serial.print("\t");}
597599
if (Ch[1]) {Serial.print(chi[1]+k); Serial.print("\t");}
598600
if (Ch[2]) {Serial.print(chi[2]+k); Serial.print("\t");}
599601
if (Ch[3]) {Serial.print(chi[3]+k); Serial.print("\t");}
600602
Serial.println("");
601-
603+
*/
602604
}
603605
/* -- eliminado em 07/May/2017 - criei buffer dinamico vb[408] --
604606
for (int k=0; k<q; k++){
@@ -645,10 +647,10 @@ void lerFluxo(){
645647
Serial.print("e-6");
646648
}
647649
Serial.print("\t");
648-
Serial.print(v0); Serial.print("\t");
649-
Serial.print(v1); Serial.print("\t");
650-
Serial.print(v2); Serial.print("\t");
651-
Serial.println(v3);
650+
if (Ch[0]) {Serial.print(v0);} else {Serial.print("0");} Serial.print("\t");
651+
if (Ch[1]) {Serial.print(v1);} else {Serial.print("0");} Serial.print("\t");
652+
if (Ch[2]) {Serial.print(v2);} else {Serial.print("0");} Serial.print("\t");
653+
if (Ch[3]) {Serial.println(v3);} else {Serial.println("0");}
652654
}
653655
}
654656

processing/oscilloscope_4ch/oscilloscope_4ch.pde

Lines changed: 42 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -392,6 +392,16 @@ void mouseClicked() {
392392
for (int k=0;k<4;k++){
393393
canal[k].chN.clicado=true;
394394
}
395+
// ligar Varias
396+
variasAmostras.clicado=true;
397+
if (variasAmostras.clicado) {
398+
port.write("vo");
399+
} else {
400+
port.write("vx");
401+
}
402+
println("Abri Serial");
403+
println("variasAmostra.clicado=",variasAmostras.clicado);
404+
395405
}
396406
} else if (r==-1) { //retornou -1 então fechar serial
397407
port.stop();
@@ -859,18 +869,19 @@ void ajustarFt() {
859869
=====================================*/
860870
void serialEvent(Serial p) {
861871
//if (p.available()>0) {}
872+
try {
862873
String cmd="", val="";
863874
String tex=p.readStringUntil(10);
864-
print(">>>> ",tex); //eliminar
875+
//print(">>>> ",tex); //eliminar
865876
if (tex.charAt(0)=='>') { //comando: >cmd=v1(tab)v2(tab)v3(tab)
866877
int i=tex.indexOf("=");
867878
if (i>=0) { // encontrou sinal "=" (igual) obs: i=-1 => não encontrou o sinal '='
868879
cmd=tex.substring(1, i); // pegar o comando obs: substring(inclusive,exclusive)
869880
val=tex.substring(i+1); // pegar o valor
870881
//println("cmd=",cmd," val=",val);
882+
871883
if (cmd.equals("f")) { // entra fluxo de dados - deslocar dados e armazenar no final
872884
String tex2[]=splitTokens(val); //val = "0(t)dtReal(t)ch0(t)ch1(t)ch2"
873-
//int vc[]=int(splitTokens(val));
874885
//deslocar os dados para baixo, para incluir o novo dado no final
875886
for (int j=0; j<4; j++) {
876887
for (int k=1; k<q.v.v; k++) {
@@ -883,26 +894,34 @@ void serialEvent(Serial p) {
883894
canal[3].v[int(q.v.v-1)]=int(tex2[5]);
884895
dtReal.setV(float(tex2[1]));
885896
if (dtReal.v-dt.v.v>1.1*dt.v.v){ dtErro=true;} else {dtErro=false;}
886-
println("cmd=",cmd," val=",val," dtReal=",dtReal.printV());
897+
887898
} else if (cmd.equals("chq")) { // entra qtd e quais canais serão recebidos
888899
int v[]=int(splitTokens(val));
889-
println("========================");
890-
println("cmd=",cmd," val=",val);
900+
//voltar // println("========================");
901+
//voltar // println("cmd=",cmd," val=",val);
891902
chq=v[0];
892903
for (int k=0;k<chq;k++){
893904
ch[k]=v[k+1];
894905
}
895-
println("chs=",chq);
906+
//voltar // println("chs=",chq);
896907
for (int k=0;k<chq;k++){
897-
println("ch[",k,"]=",ch[k]);
908+
//voltar // println("ch[",k,"]=",ch[k]);
898909
}
899-
println("========================");
910+
//voltar // println("========================");
900911
} else if (cmd.equals("v")) { // entrada de Varias Amostra
901912
int v[]=int(splitTokens(val));
902-
println("tex=",tex);
913+
//voltar // println("tex=",tex);
903914
//println("cmd=",cmd," val=",val);
904-
for (int k=0; k<chq; k++){
905-
canal[ch[k]].buffer[v[0]]=v[k+1];
915+
//println("v.length=",v.length," chq=",chq);
916+
//for (int k=0; k<v.length; k++){
917+
// print(" v[",k,"]=",v[k]);
918+
//}
919+
//println("");
920+
921+
if (v.length==chq+1){ // >v=1 1024 100 300 300
922+
for (int k=0; k<chq; k++){
923+
canal[ch[k]].buffer[v[0]]=v[k+1];
924+
}
906925
}
907926
/*
908927
int kk=v[0]; // indice da matriz
@@ -919,7 +938,7 @@ void serialEvent(Serial p) {
919938
//println("atualizou");
920939
tTotalReal.setV(float(val));
921940
//text(tTotalReal,pnlAmostra.x+2,pnlAmostra.y+pnlAmostra.h);
922-
println("cmd=",cmd," val=",val," tTotalReal=",tTotalReal.printV());
941+
//voltar // println("cmd=",cmd," val=",val," tTotalReal=",tTotalReal.printV());
923942
canal[0].atualizou=true; // terminou de entrar os dados então
924943
canal[1].atualizou=true; // carregar do buffer
925944
canal[2].atualizou=true;
@@ -936,7 +955,7 @@ void serialEvent(Serial p) {
936955
dtReal.setV(float(val));
937956
if (dtReal.n>dt.v.n+10){ dtErro=true;} else {dtErro=false;}
938957
//text(dtReal,pnlAmostra.x+2,pnlAmostra.y+pnlAmostra.h-12);
939-
println("cmd=",cmd," val=",val," dtReal=",dtReal.printV());
958+
//voltar // println("cmd=",cmd," val=",val," dtReal=",dtReal.printV());
940959

941960
} else if (cmd.equals("r") || cmd.equals("c") || cmd.equals("rc")) { // valor do resistor
942961
String tex2[]=splitTokens(val, "\t\r");
@@ -951,19 +970,19 @@ void serialEvent(Serial p) {
951970
} else if (cmd.charAt(0)=='?') { // carregando as configurações do Arduino (ao conectar)
952971
cmd=cmd.substring(2); // eliminar 2 caracteres iniciais "? comando"
953972
val=val.substring(0,val.length()-2); // eliminar 2 caracteres finais: \n\r(13,10)(^M^J) (retorno de linha)
954-
println("cmd=",cmd," val=",val);
973+
//voltar // println("cmd=",cmd," val=",val);
955974
if (cmd.equals("q")){ // val=100
956975
q.v.v=float(val);
957976
} else if (cmd.equals("dt")){
958977
char unid=val.charAt(val.length()-2);
959978
val=val.substring(0,val.length()-2);
960-
println("unid=",unid," val=",val);
979+
//voltar // println("unid=",unid," val=",val);
961980
if (unid=='u'){
962981
val=val+"e-6";
963982
}else{
964983
val=val+"e-3";
965984
}
966-
println("val=",val);
985+
//voltar // println("val=",val);
967986
dt.setV(float(val));
968987
ajustarFt();
969988

@@ -996,13 +1015,18 @@ void serialEvent(Serial p) {
9961015
}else if (cmd.equals("pwmPon")){ // cmd="pwmPon", val="25%"
9971016
val=val.substring(0,val.length()-1);
9981017
tonSinal.setV(float(val));
999-
println("pwmPon=",float(val));
1018+
//voltar // println("pwmPon=",float(val));
10001019
}else {
1001-
print(">>>> ",tex);
1020+
print("else >>>> ",tex);
10021021
}
10031022
}
10041023
}
10051024
//println("cmd=",cmd);
10061025
//println("val=",val);
10071026
}
1027+
}
1028+
catch(RuntimeException e){
1029+
e.printStackTrace();
1030+
1031+
}
10081032
}

0 commit comments

Comments
 (0)