collapse

* Posts Recentes

Circuito Microfone que funcione por almamater
[Hoje às 17:14]


Emulador NES em ESP32 por dropes
[22 de Abril de 2024, 14:14]


Arame de Estendal por almamater
[18 de Abril de 2024, 16:16]


O que é isto ? por SerraCabo
[12 de Abril de 2024, 14:20]


Amplificador - Rockboard HA 1 In-Ear por almamater
[11 de Abril de 2024, 20:46]


Meu novo robô por josecarlos
[29 de Março de 2024, 18:30]


Bateria - Portátil por almamater
[25 de Março de 2024, 22:14]


Escolher Osciloscópio por jm_araujo
[06 de Fevereiro de 2024, 23:07]


TP4056 - Dúvida por dropes
[31 de Janeiro de 2024, 14:13]


Leitura de dados por Porta Serie por jm_araujo
[22 de Janeiro de 2024, 14:00]

Autor Tópico: Leitura de dados por Porta Serie  (Lida 14812 vezes)

0 Membros e 26 Visitantes estão a ver este tópico.

Offline filjoa

  • Mini Robot
  • *
  • Mensagens: 321
Leitura de dados por Porta Serie
« em: 18 de Janeiro de 2024, 16:59 »
Viva

Precisava de ajuda para interagir com um equipamento eletrónico que tem porta serie...

Trata-se de uma central de incêndio, e por porta serie, sempre que faço uma operação, ela é reportada por na porta, mas certos inventos, não sei lá porquê, não aparecem.

Então precisava de programar, um comando num terminal que fosse capaz de saber o estado do painel de x em x tempo, mas já não faço isto à tanto tempo, que não faço ideia do que escrever no terminal para que me seja devolvido um comando.

Já agora que programa usam para testar comunicação serie? Eu estou a usar o Putty.

Obrigado



Offline KammutierSpule

  • Mini Robot
  • *
  • Mensagens: 1.483
Re: Leitura de dados por Porta Serie
« Responder #1 em: 18 de Janeiro de 2024, 18:30 »
A minha sugestão, para a funcionalidade pretendida, o mais fácil nos dias de hoje, é usar o chatGPT e pedir que ele faça um script em Python.
Costuma dar bons resultados. (correr o script Python em Linux ou perceber como endereçar a porta serie)

Online jm_araujo

  • Mini Robot
  • *
  • Mensagens: 2.950
  • NERD!
Re: Leitura de dados por Porta Serie
« Responder #2 em: 18 de Janeiro de 2024, 20:50 »
Costumo usar o realterm, não que goste muito dele, mas porque não consegui encontrar melhor. Gostava muito do Bray++ Terminal (péssimo nome) até descobrir que perdia dados, as dores de cabeça que me deu.
Quando ao comando, isso é específico do painel, tens de ter o manual do mesmo para saber a que mensagens é que responde. Depois a recomendação de usar Python é boa, presta-se bem a esses trabalhos, e nem precisas de ChatGPT, é fácil de usar. Linux ou Windows tanto faz, corre bem nos dois, só muda o nome da porta série
« Última modificação: 18 de Janeiro de 2024, 20:51 por jm_araujo »

Offline dropes

  • Mini Robot
  • *
  • Mensagens: 2.198
Re: Leitura de dados por Porta Serie
« Responder #3 em: 18 de Janeiro de 2024, 21:25 »
Realterm faz o serviço bem.

Além de ser fácil a configuração da porta, também captura para um ficheiro qualquer dado que receba (caso se pretenda).

Offline filjoa

  • Mini Robot
  • *
  • Mensagens: 321
Re: Leitura de dados por Porta Serie
« Responder #4 em: 18 de Janeiro de 2024, 23:12 »
desde já obrigado malta...

mas por agora apenas queria ter no terminal os dados do painel.

Imagino que algo neste manual o faça, tipo o envio de um Hexadecimal ou String, mas eu neste momento nao estou a dar com o principio básico do "olá mundo" que é saber o que enviar no terminal para obter uma resposta da central...

Por exemplo, quando no manual está isto "PACKET_TYPE_QUERY_MONITORING", como é suporto enviar isto para obter uma resposta?

obrigado
« Última modificação: 18 de Janeiro de 2024, 23:29 por filjoa »

Online jm_araujo

  • Mini Robot
  • *
  • Mensagens: 2.950
  • NERD!
Re: Leitura de dados por Porta Serie
« Responder #5 em: 19 de Janeiro de 2024, 11:00 »
A minha bola de cristal está com problemas, não encontro a versão do manual dum equipamento que não indicaste marca nem modelo... ;D

Há-de estar indicado em algum outro lado do manual, ou numa referencia ao protocolo.
É impossível qualquer um de nós saber sem partilhares mais informação, no mínimo uma versão do manual, nem que seja no site do fabricante...

Isso que mostras é o mesmo que eu te disser para falar comigo só tens de ligar para o contacto "JOSE ARAUJO" guardado no telefone. Se não te indicar qual o meu número para poderes primeiro criar o contacto, ficas na mesma, né?
« Última modificação: 19 de Janeiro de 2024, 11:02 por jm_araujo »

Offline filjoa

  • Mini Robot
  • *
  • Mensagens: 321
Re: Leitura de dados por Porta Serie
« Responder #6 em: 19 de Janeiro de 2024, 12:12 »
Viva,

Desculpa amigo, mas pensei que tinha referido lolol

Trata-se de uma central de incendio kentec SyncroAS.

No manual nao fala sobre como retirar informação da central, apenas no ficheiro que coloquei em anexo no primeiro tópico, é que refere os comandos...

Eles no site tem um sistema para interligação com o equipamento que se chama Vizulinx, que se liga por porta serie e reporta num terminal "alguma" informação, tenho aqui comigo, mas nao consigo ter toda a informação que esta no painel, por exemplo, sub-enderecos, ativação e desactivação de equipamentos.

Entretanto decidi ligar um cabo de serie direto a porta de programação da central de incêndio e abrindo um terminal, verifico "quase" tudo... alarmes, desativacoes, etc...

No entanto, quando desativo um equipamento, aparece no terminal, dispositivo X desativado,  mas quando o volto a ativar, nao aparece a informação dessa desactivação,  tal como falhas que aparecem e é notificado na porta, mas a reposição, já nao aparece..

Isto tudo, porque querem que estas informações apareçam num quadro sinotico, controlado por um automato, que espera que eu lhe dê o estado "em tempo real" da central.

Como esse ficheiro que coloquei em anexo foi fornecido por o fabricante,  como sendo os comandos serie que o Vizulinx utiliza, penso eu que eu enviando algum desses comandos, a central me devolva alguma informação.

A minha questão é que nao sei o que enviar para a central... envio alguma coisa do tipo 0x01? Mando uma string?

Será que consegui explicar a minha problemática?  :P

Obrigado

Entr

Online jm_araujo

  • Mini Robot
  • *
  • Mensagens: 2.950
  • NERD!
Re: Leitura de dados por Porta Serie
« Responder #7 em: 19 de Janeiro de 2024, 13:04 »
Primeiro desculpa porque a primeira vez respondi no telemóvel e não vi o anexo, e nas resposta seguinte não voltei atrás. Erro meu.

O manual tem indicado no capitulo 12 o que tens de enviar.
Tens de fazer experiências a ver ao que responde, mas deve de ser qq coisa como
0xdb - sincroniza
0x00 - nº ordem (não sei se é obrigatório incrementar a cada mensagem enviada, dizem para o fazer mas não sei se é mandatório)
0xff - ou será 0x00? tens de testar:
Código: [Seleccione]
Each packet has a Node Address from 1 to 127 as part of the header. The fire panel uses this
to decide whether to deal with the message directly or to pass it over the network. A Node
Address of 0xff always refers to the node connected directly to the PC. A Node Address of 0
is a global address.
0x05 - "PACKET_TYPE_QUERY_PANEL_DATA" , responde com uma carrada de dados, vê se são os que queres
0x00 - sem dados
0x04 - checksum (soma dos anteriores sem a sincronização)

Ou seja, tens de enviar a mensagem "0xdb 0x00 0xff 0x05 0x00 0x04" (19200-8N1) para fazer o PACKET_TYPE_QUERY_PANEL_DATA.
Se tiveres resposta tens de ler o resto do capitulo para a descodificar :D


Depois de conseguires que o equipamento fale contigo, tens de ver quais são as mensagens que precisas enviar para teres os dados que queres.

Se isto tudo falhar, tens outra solução: inspecionar as comunicações entre o visulinx e a central, seja com um cabo com derivação para outra porta série, ou com software que permite interceptar portas série. Não encontro nenhum gratuito mas com este deves safarte: https://freeserialanalyzer.com/ (5 sessões por dia de 15 minutos cada)

Offline filjoa

  • Mini Robot
  • *
  • Mensagens: 321
Re: Leitura de dados por Porta Serie
« Responder #8 em: 19 de Janeiro de 2024, 14:46 »
viva amigo,

não tens de forma alguma pedir desculpa... eu por vezes quando estou de volta de uma situação, acho que todas as pessoas tb estão e depois deixo metade por dizer...

Vou testar e reporto o resoltado...

Offline filjoa

  • Mini Robot
  • *
  • Mensagens: 321
Re: Leitura de dados por Porta Serie
« Responder #9 em: 20 de Janeiro de 2024, 09:48 »
Viva,

Ontem passei muito a correr na empresa, apenas para ir testar este comando, e alguma coisa recebi vindo da central de incêndio. Mas não tive tempo de experimentar mais...

Resta perceber o que ela respondeu ali naqueles numeros...


Online jm_araujo

  • Mini Robot
  • *
  • Mensagens: 2.950
  • NERD!
Re: Leitura de dados por Porta Serie
« Responder #10 em: 20 de Janeiro de 2024, 10:05 »
Boa, quer dizer que interpretei bem o manual.
Assim de repente a resposta coincide com o pedido: a série de 08001800 são as horas de ligar/desligar para os 7 dias da semana.8h e 18h parece-me uma programação razoável, pelo que assumo que a comunicação correu bem.
 Agora só tens de estudar o manual e ver quais são as mensagens que tens de enviar para te retornar os dados que precisas.
Primeiro tens de identificar o que precisas, e depois ver em que respostas é que esses dados estão presentes. Toca a estudar o manual que enviaste!

« Última modificação: 20 de Janeiro de 2024, 10:12 por jm_araujo »

Offline filjoa

  • Mini Robot
  • *
  • Mensagens: 321
Re: Leitura de dados por Porta Serie
« Responder #11 em: 22 de Janeiro de 2024, 12:03 »
viva

bem, cá estou eu a experimentar falar com a dita... mas ela não me liga nenhuma :D

Pag. 69
PACKET_TYPE_QUERY_LEDS_STATE
Request Panel Leds Status

0XF7

Pag. 71
PACKET_TYPE_GET_DISPLAY
Request Panel Display Data

0xF0

Pag. 71
PACKET_TYPE_GET_EVENT
Request Event Data

0xFA

Para obter estes dados, não basta enviar o hex correspondente, consegues me ajudar qual a trama que terei de enviar para receber informação? É que eu nao percebi como construíste "0xdb 0x00 0xff 0x05 0x00 0x04"

Obrigado

Online jm_araujo

  • Mini Robot
  • *
  • Mensagens: 2.950
  • NERD!
Re: Leitura de dados por Porta Serie
« Responder #12 em: 22 de Janeiro de 2024, 14:00 »
O que não percebeste? expliquei byte a byte, seguindo o que está no manual (pag 14 e 15 do pdf), e repetir sem saber o que não percebeste não leva a lado nenhum...
Para esses 3 deve ser algo do género:
PACKET_TYPE_QUERY_LEDS_STATE
0xdb 0x00 0xff 0xf7 0x00 0xf6

PACKET_TYPE_GET_DISPLAY
0xdb 0x00 0xff 0xf0 0x00 0xef

PACKET_TYPE_GET_EVENT
0xdb 0x00 0xff 0xfa 0x02 0xhh 0xll 0xXX
sendo 0xhh e 0xll os dois bytes(MSB/LSB) que compõe o numero do evento , e o 0xXX o checksum que tens de calcular
para o primeiro será
0xdb 0x00 0xff 0xfa 0x02 0x00 0x00 0xfb
segundo
0xdb 0x00 0xff 0xfa 0x02 0x00 0x01 0xfc
e por aí fora
« Última modificação: 22 de Janeiro de 2024, 14:58 por jm_araujo »