collapse

* Posts Recentes

Controlar Motor AC por Njay
[Hoje às 18:10]


Paineis Fotovoltaicos para Autoconsumo (Kits EDP)? por KammutierSpule
[Hoje às 13:42]


Como repôr posições dos Icones/Pastas no Desktop W8? por senso
[Ontem às 23:55]


Alguem usa as libs md_max72xx e md_parola ? por jm_araujo
[18 de Abril de 2018, 16:32]


Festival Nacional de Robótica 2018 por beirao
[16 de Abril de 2018, 23:36]


King of Bots - China (Robotwars, Battlebots) por beirao
[16 de Abril de 2018, 23:35]


HM-20 BLE 4.0 + ARDUINO por tigochi
[16 de Abril de 2018, 15:44]


Impressora 3D problema no nivelamento automatico por jm_araujo
[15 de Abril de 2018, 23:17]


Apresenta-te aqui - Onde e o que estudam/trabalham? por TigPT
[15 de Abril de 2018, 17:30]


Resina em PCB por Hugu
[15 de Abril de 2018, 16:26]

Autor Tópico: Software para captura de dados (Serial COM) com timestamp  (Lida 775 vezes)

0 Membros e 1 Visitante estão a ver este tópico.

Offline samc

  • Mini Robot
  • *
  • Mensagens: 429
Software para captura de dados (Serial COM) com timestamp
« em: 19 de Dezembro de 2017, 22:28 »
Viva, foi um pouco difícil decidir que título em português servia para explicar a ajuda que estou a pedir... Por isso vou tentar explicar a situação de forma a ver se alguém me consegue dar umas dicas.

Recebi esta semana uma dummy load ajustável/"programável" e uma das features extra é que é possível utilizar a comunicação serial num dos modos (é transmitido o valor da tensão da carga com uma precisão de 0.01V)
Após fazer vários tentativas e experimentar as várias combinações das opções do software de captura de dados (o software com que consegui ter melhor resultados foi com o RealTerm) finalmente lá consegui ler corretamente os valores.
Agora o meu próximo passo seria fazer uma captura de dados para um ficheiro, de forma a depois poder traçar um gráfico em função do tempo.
O meu problema é que não conheço nenhum software que realize essa tarefa de uma forma mais eficaz. Os resultados que tive com o RealTerm foram muito insatisfatórios (devido à minha "noobice" nestas matérias): os dados não ficaram separados por grupo de bytes e o timestamp apenas foi aplicado no início (fiz uma captura de 10 segundos)

Alguém conhece algum software que me possa indicar para fazer esta captura?



Em anexo deixo algumas imagens dos resultados obtidos.
O formato dos dados é:
Código: [Seleccione]
byte 1 - tensão antes do ponto decimal   byte 2 - tensão após ponto decimal   byte 3 - valor lógico de controlo => 1 se não houver errosNeste caso pode-se ver nas imagens em anexo a ser medida uma tensão de 5.06V

Deixo também uma imagem que fiz com instruções para ajudar a quem tiver uma dummy load igual e quiser experimentar essa funcionalidade (não precisa de perder tempo a pesquisar)

Obrigado desde já pelas respostas
« Última modificação: 19 de Dezembro de 2017, 22:31 por samc »

Offline Njay

  • Mini Robot
  • *
  • Mensagens: 3.264
    • Tróniquices
Re: Software para captura de dados (Serial COM) com timestamp
« Responder #1 em: 20 de Dezembro de 2017, 01:46 »
Bom, eu fazia isso em TCL, claro :D

Sei lá, começava por abrir um ficheiro de texto pa mandar pa lá as leituras

set fd  [open myfile.txt w]

Depois abria e configurava a COMx (digamos que x = 5):

set sd  [open {\\.\com5} r]
fconfigure $sd -buffering full -buffersize 3 -translation binary -mode 115200,none,8,1


E depois entrava num loop simples a ler os dados da COM e a enviá-los para um ficheiro:

while 1  {
    binary scan [read $sd 3] ccc parteInteira parteDecimal error
    if {$error != 1}  {
        puts "A leitura retornou erro, vou bazar"
        exit
    }
    puts $fd $parteInteira.[format %02i $parteDecimal]
    flush $fd
}


Isto é um loop infinito mas dá para parar com CTRL+C. Isto foi tudo feito de cabeça e portanto pode ter erros, mas se quiseres experimentar a gente afina isso.

Tenho aqui um zip com um interpretador de TCL pequeno e que não é preciso instalar:

https://lusorobotica.com/index.php?topic=8032.msg90559#msg90559

Há outras linguagens de scripting/alto nível em que é possível fazer este tipo de coisa facilmente.
« Última modificação: 20 de Dezembro de 2017, 02:21 por Njay »

Offline vasco

  • Mini Robot
  • *
  • Mensagens: 183
Re: Software para captura de dados (Serial COM) com timestamp
« Responder #2 em: 20 de Dezembro de 2017, 10:09 »
Se calhar o Arduino IDE (sim, eu sei que é uma resposta estranha) é capaz de te fazer um gráfico disso automaticamente, nunca experimentei, não sei se dá para processar valores que vêm todos na mesma linha (sem um \n ou \r a separar), mas pode ser que sim.
Fora isso, perl, python ou tcl, é à escolha.

Nota: só usei tcl nos tempos do telnet e dos modems em que dava jeito usar o expect para falar com essas coisas, se não fosse a msg do Njay nem me lembraria da sua existência. nice!  ;D

Ainda existe o Visual Basic ? :-) Acho que ainda não o usei no sec XXI :-) Mas pelo que me lembro era relativamente trivial fazer esse tipo de coisa.

É irritante o timestamp só aparecer uma vez, a única ideia que tenho é fazer o close e re-open da COM de x em x bytes, mas a essa velocidade isso implica perder umas quantas leituras.
Stupid men are often capable of things the clever wouldn't dare to contemplate.

Offline KammutierSpule

  • Mini Robot
  • *
  • Mensagens: 1.190
Re: Software para captura de dados (Serial COM) com timestamp
« Responder #3 em: 20 de Dezembro de 2017, 10:21 »
Parece magia aí o código TCL! :P

Offline samc

  • Mini Robot
  • *
  • Mensagens: 429
Re: Software para captura de dados (Serial COM) com timestamp
« Responder #4 em: 20 de Dezembro de 2017, 11:35 »
@Njay clap clap  ;)

Óptima sugestão com direito a código e tudo, mas procurava mesmo um software que fizesse esse tratamento de dados. É que na minha cabeça, isto é algo tão comum que quase de certeza certeza já existiria um software completo e com várias opções extra para realizar esta tarefa. Comparo isto a caso necessitasse de desenhar um gráfico com os dados, não valeria estar a pena a perder tempo precioso e "inventar a roda novamente" com várias opções já existentes.

Caso precisasse de fazer um tratamento de dados muito específico onde na minha cabeça só conseguira realizar tal tarefa através de um software personalizado, iria usar o MATLAB que é onde estou mais confortável para fazer isso (nunca usei TCL na minha vida). Mas estava com medo de estar a perder tempo desnecessariamente com algo que podia ser feito através do uso de uma aplicação que de certeza estaria mais completa e mais profissional do que qualquer script que eu escrevesse

Offline LVirtual

  • Mini Robot
  • *
  • Mensagens: 469
  • http://www.s-tronika.com
    • S-Tronika - Serviços Técnicos de Electrónica
Re: Software para captura de dados (Serial COM) com timestamp
« Responder #5 em: 20 de Dezembro de 2017, 15:27 »
eu tenho um softare feito por mim para isso :)
ate mete os dados recebidos na porta serie num ficheiro excel em tempo real e tudo e ate gera graficos.
diga-se de passagem que foi o meu maior desafio em visual basic 6.0 porque me obrigava a fazer leituras a 19600 bauds...
e ficou mais que optimo, foi tambem o meu primeiro software vendido a alguem. ;)

alem disso permite com poucas mexidas no codigo recortar todos os campos de dados de forma que os mesmos sejam lidos num grafico em tempo real
e com o formato que for necessario.

se quiseres experimentar o dito cujo de forma free trial basta mandares pm ;)
"O defeito mais grave dos humanos, aquele que coloca mais obstáculos à sua evolução, é a crença profundamente arreigada na infalibilidade dos seus raciocínios e dos seus pontos de vista."

Offline samc

  • Mini Robot
  • *
  • Mensagens: 429
Re: Software para captura de dados (Serial COM) com timestamp
« Responder #6 em: 20 de Dezembro de 2017, 16:14 »
Obrigado pela "oferta" LVirtual  ;)
Estou a ver que vou ter mesmo de meter mãos à obra e criar uma app simples em Node.js para realizar essa leitura.
O node.js é de certa forma o meu python  ::) nunca me cativou para aprender e sei que seria uma mais-valia, mas fez-me sempre alguma confusão escrever uma linguagem com base na indentação do código, prefiro usar as chavetas e ter uma sintaxe mais próxima do C...

Estive a resistir a isto porque tenho ainda de certa forma o trauma do desenvolvimento desnecessário, para aí no início dos anos 2000, quando tive o meu primeiro PC e o acesso à internet era muito limitado, perdi muitas horas a desenvolver um software para uso pessoal (curiosamente em VB6 como o LVirtual) de gestão e catalogação da minha coleção de jogos.
Passado não muito pouco tempo, quando comecei a ter um acesso mais comum à internet, "descobri" que existiam muitos e melhores programas de catalogação e deixei de usar o software que tinha desenvolvido.
Este foi apenas um dos muitos exemplos de situações similares que aconteceram na minha vida.

PS: por acaso fiquei curioso e fui experimentar se o executável ainda corria passados todos estes anos e com a excepção da ajuda (formato WinHelp que ficou obsoleto) ainda "está funcional". Fica a partilha so screenshot que trás ainda algumas recordações para alguns, com aquela interface tão datada... Windows XP style  :P
« Última modificação: 20 de Dezembro de 2017, 16:16 por samc »

Offline jm_araujo

  • Mini Robot
  • *
  • Mensagens: 2.288
  • NERD!
Re: Software para captura de dados (Serial COM) com timestamp
« Responder #7 em: 20 de Dezembro de 2017, 16:25 »

Offline LVirtual

  • Mini Robot
  • *
  • Mensagens: 469
  • http://www.s-tronika.com
    • S-Tronika - Serviços Técnicos de Electrónica
Re: Software para captura de dados (Serial COM) com timestamp
« Responder #8 em: 20 de Dezembro de 2017, 16:36 »
Obrigado pela "oferta" LVirtual  ;)
Estou a ver que vou ter mesmo de meter mãos à obra e criar uma app simples em Node.js para realizar essa leitura.
O node.js é de certa forma o meu python  ::) nunca me cativou para aprender e sei que seria uma mais-valia, mas fez-me sempre alguma confusão escrever uma linguagem com base na indentação do código, prefiro usar as chavetas e ter uma sintaxe mais próxima do C...

Estive a resistir a isto porque tenho ainda de certa forma o trauma do desenvolvimento desnecessário, para aí no início dos anos 2000, quando tive o meu primeiro PC e o acesso à internet era muito limitado, perdi muitas horas a desenvolver um software para uso pessoal (curiosamente em VB6 como o LVirtual) de gestão e catalogação da minha coleção de jogos.
Passado não muito pouco tempo, quando comecei a ter um acesso mais comum à internet, "descobri" que existiam muitos e melhores programas de catalogação e deixei de usar o software que tinha desenvolvido.
Este foi apenas um dos muitos exemplos de situações similares que aconteceram na minha vida.

PS: por acaso fiquei curioso e fui experimentar se o executável ainda corria passados todos estes anos e com a excepção da ajuda (formato WinHelp que ficou obsoleto) ainda "está funcional". Fica a partilha so screenshot que trás ainda algumas recordações para alguns, com aquela interface tão datada... Windows XP style  :P

esse tipo de bases de dados tambem eu fiz quando andava a aprender a mexer no Vb 6 :)

gosto do winhelp e do xp style :)
alias tenho os meus "Sevens" configurados ao modo do XP, nao gosto de tantas mariquices visuais como a MS obriga a ter agora...

podes sempre formatar o firmware para enviar os dados para a porta serie em formato csv ou seja separado por virgulas e depois meteres o velhinho hyperterminal a receber os dados e gravar num ficheiro e depois meteres o excell a trabalhar os dados em forma de grafico, mas isso vai-te causar um diferimento na analise dos dados.
se queres poder analisar os dados em tempo real vais ter sempre que criar uma aplicaçao para pc que te trate os dados na forma visaul que precisares em tempo real. Quanto a isso nao ha nada a fazer...


um adicional ao texto:

reconheço perfeitamente bem esses ficheiros com estenxao frx e frm por tras da imagem da BDJogos.exe... ;)
« Última modificação: 20 de Dezembro de 2017, 16:39 por LVirtual »
"O defeito mais grave dos humanos, aquele que coloca mais obstáculos à sua evolução, é a crença profundamente arreigada na infalibilidade dos seus raciocínios e dos seus pontos de vista."

Offline Njay

  • Mini Robot
  • *
  • Mensagens: 3.264
    • Tróniquices
Re: Software para captura de dados (Serial COM) com timestamp
« Responder #9 em: 20 de Dezembro de 2017, 18:24 »
Se deres extensão CSV ao ficheiro que sai do script, ele é lido pelo excel.

Parece magia não, é magia ;D

Offline LVirtual

  • Mini Robot
  • *
  • Mensagens: 469
  • http://www.s-tronika.com
    • S-Tronika - Serviços Técnicos de Electrónica
Re: Software para captura de dados (Serial COM) com timestamp
« Responder #10 em: 20 de Dezembro de 2017, 18:30 »
Se deres extensão CSV ao ficheiro que sai do script, ele é lido pelo excel.

Parece magia não, é magia ;D

se nao tiver os campos de dados separados por virgulas ou espaços o excell faz-te um manguito a ler o ficheiro...
ou entao mete todo o conteudo numa so celula...
"O defeito mais grave dos humanos, aquele que coloca mais obstáculos à sua evolução, é a crença profundamente arreigada na infalibilidade dos seus raciocínios e dos seus pontos de vista."

Offline Njay

  • Mini Robot
  • *
  • Mensagens: 3.264
    • Tróniquices
Re: Software para captura de dados (Serial COM) com timestamp
« Responder #11 em: 20 de Dezembro de 2017, 18:36 »
Só há 1 coluna, por isso não é preciso separador.

Offline LVirtual

  • Mini Robot
  • *
  • Mensagens: 469
  • http://www.s-tronika.com
    • S-Tronika - Serviços Técnicos de Electrónica
Re: Software para captura de dados (Serial COM) com timestamp
« Responder #12 em: 20 de Dezembro de 2017, 18:38 »
Só há 1 coluna, por isso não é preciso separador.

e como é que vais fazer para ajeitar os valores numa coluna unica, se nao estiverem separados por um espaço ou virgula?
é que o excell usa a funçao split array que existe em muitas linguagens para transpor os valores para uma ou mais colunas...

se ele nao souber qual o caracter que separa as colunas mete tudo dentro de uma unica celula ao abrir o ficheiro.
nos ficheiros csv o separador padrao é a virgula. por isso mesmo é que o formato csv é um standard no tratamento estatistico de dados e nao só...
« Última modificação: 20 de Dezembro de 2017, 18:41 por LVirtual »
"O defeito mais grave dos humanos, aquele que coloca mais obstáculos à sua evolução, é a crença profundamente arreigada na infalibilidade dos seus raciocínios e dos seus pontos de vista."

Offline Njay

  • Mini Robot
  • *
  • Mensagens: 3.264
    • Tróniquices
Re: Software para captura de dados (Serial COM) com timestamp
« Responder #13 em: 20 de Dezembro de 2017, 18:55 »
Estou a falar do problema do samc quer resolver, só há um valor para logar, uma tensão.

Offline jm_araujo

  • Mini Robot
  • *
  • Mensagens: 2.288
  • NERD!
Re: Software para captura de dados (Serial COM) com timestamp
« Responder #14 em: 21 de Dezembro de 2017, 09:59 »
Um aparte:
Porque não tinhas indicado qual o modelo, fui à pesquisa e acho que é igual ao deste review:
http://lygte-info.dk/review/Review%20Electronic%20load%2060W%20UK.html

Consegue-se encontrar o mesmo à venda por volta de 13€ no ebay/ali procurando por "60W load" :
    https://www.ebay.com/itm/253019967332
    https://pt.aliexpress.com/item/9-99A-60W-30V-Constant-Current-Electronic-Load-Discharge-Battery-Capacity-Tester/32749298179.html

Videos:
Review:

Reverse Engineer:

Mods:


E uma implicância minha é que se uma carga é programável não devia ser uma "dummy load". Para mim o termo "dummy load" devia ser usado só para as cargas passivas, tipo estas:
« Última modificação: 21 de Dezembro de 2017, 10:08 por jm_araujo »