Executando verificação de segurança...
3

TRAVAMENTO DE PORTAS COM PARA TROCA DE DADOS

Olá Pessoal, não sei muito bem como escrever sobre este problema que estou passando de forma mais tecnica, porém la vai. Estou atuando em um projeto que tem contato com as portas COM do computador para troca de dados, porém estou tendo alguns problemas de travas as portas por algum motivo e sempre tenho que desplugar e plugar as portas no computador pq elas simplesmentes param de ser listadas como uma porta disponivel para troca de dados. Acredito que elas podem estar parando pq eu não limpo o buffer que faz a troca de mensagens cada vez que termino a rotina que a utilizo.

Alguem ja teve uma experiencia parecida ?

Tentei também achar isso em algum outro site mas acredito que esse problema é muito nichado.

Desde já agradeco.

Carregando publicação patrocinada...
3

boa tarde, sr.

qual a série da porta COM? (RS-000, por exemplo) está usando USB ou diretamente a COM? talvez seja só o drive*

qual tecnologia vc está usando para acessar a porta COM? alta abstração ou low level (WinAPI, C/C++)
assim sendo, vc está acessando a porta COM diretamente ou usa alguma API específica do SO?

via windows, acesse devmgmt.msc. via linux, sugiro pesquisar, mas no ubuntu eu executo um comando ls simples:

ls /dev/ttyUSB* /dev/ttyS* /dev/serial/by-id/

está rodando em Windows ou Linux (mas sem docker)?

oq está conectado na porta COM? um Arduino, um leitor de código de barras, ou um dispositivo industrial...?

algum outro processo pode estar tentando acessar a mesma porta ao mesmo tempo?

bom, se a porta não for fechada corretamente, pode ficar "presa" até o SO forçar a liberação, de forma bloqueante. e cobsiderando que se vc n estiver sendo intermediado por um SO (há casos em q isso ocorre), então o sr terá de manipular e matar os objetos q consomem esses recursos, sem intermediários.
e digamos q o sr esteja utilizando alguma lib, deve-se monitorar o ciclo de vida de objetos e processos, pois, para algumas libs, a porta pode ficar travada se o buffer de entrada/saída não for limpo corretamente.
se estiver usando uma lib, consulte as docs em busca de um método "flush"; geralmente é isso.

a depender das respostas, poderei ajudar mais. contextualize mais a situação.

uma solução rápida é expor uma API REST a partir de qualquer dispositivo conectado via USB, a fim de facilitar o desenvolvimento, não envolver low level mas abstrair melhor.

prontamente, aguardamos retorno.

1

Ola senhor, tudo bem ?

Entao andei pesquisando e descobri que a porta que troca os dados e uma RS 232.

A aplicacao se trata de uma calibracao que estou fazendo em uma placa eletronica e para calibrar essa placa, tem um usb que sai do pc e conecta em um gravador que por sua vez conecta na mesa de calibracao que por sua vez conecta a placa.

Estou rodando a aplicacao no windows e sem docker.

O que esta conectado a porta COM e um gravador industrial

Atualmente estou fazendo o codigo em python e o gravador e da empresa SEGGER.

2

Meus 2 cents:

Fale um pouco mais sobre o ambiente onde isto ocorre: se windows/linux/esp32/etc, versao do s.o., driver que esta usando, etc.

Este tipo de problema tem toda a cara de ser driver - p.ex. voce tentou o mesmo processo via VM ? Colocar o S.O. que faz a troca de dados em uma VM (p.ex. Virtualbox) e ver se muda alguma coisa.

Outro ponto eh se a serial eh via adaptador usb ou via porta serial fisica - adaptadores USB/Serial podem ser bastante chatos de trabalhar.

Uso linux com balanca serial - e tive algumas dores de cabeca neste sentido.

1

Isto está ocorrendo em um windows 10, na maquina do cliente está conectado assim.
Pc->hub usb->gravador->maquina de calibracao->placa eletronica.

Nao tentei rodar em VM, mas é estranho pq quando faço o teste em bancada no mesmo sistema operacional o gravador nao fica travado, uma coisa que está diferente do meu setup e do cliente é que eles possuem um hub usb, talvez ele esteja travando o processo ?

Descobri tambem que está sendo utilizado um adaptador 'Cabo Adaptador Usb A Ugreen P/db9 Rs232 Fêmea 1.5m Preto'. Qual geralmente é sua solucao quando está trabalhando com adaptador ?