npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@libs-scripts-mep/std-control

v3.1.3

Published

Bibloteca que auxilia no controle dos motores da base STD (BS-80)

Downloads

69

Readme

Controle STD - Smart Test Device (BS-80)

Bibloteca que auxilia no controle dos motores da base STD (BS-80)

Instalando

Abra o terminal, e na pasta do script, execute:

npm i @libs-scripts-mep/std-control

Após finalizada a instalação da biblioteca, inclua em seu html:

<script src="node_modules/@libs-scripts-mep/std-control/std-control.js"></script>

⚠️ Se seu projeto não utiliza a biblioteca reles-daq, será necessário incluir também em seu html:

<!-- DEPENDENCIAS -->
<script src="node_modules/@libs-scripts-mep/reles-daq/reles-daq.js"></script>
<!-- BIBLIOTECA -->
<script src="node_modules/@libs-scripts-mep/std-control/std-control.js"></script>

⚠️Fique atento à ordem de carregamento dos arquivos, as dependências devem ser carregadas ANTES da biblioteca, como no trecho acima.

Resumo da Classe


class SmartTestDeviceControl {
    /**
     * 
     * @param {Array} releSobe array contendo o rele responsavel por fazer a base subir o motor
     * @param {Array} releDesce array contendo o rele responsavel por fazer a base descer o motor
     * @param {string} fimDeCursoSuperior string informando a entrada relacionada ao fim de curso superior
     * @param {string} fimDeCursoInferior string informando a entrada relacionada ao fim de curso inferior
     * @param {string} bimanual string informando a entrada relacionada ao bimanual
     * @param {string} emergencia string informando a entrada relacionada a emergencia
     */
    constructor(releSobe, releDesce, fimDeCursoSuperior, fimDeCursoInferior, bimanual, emergencia) {
        this.FimDeCursoInferior = fimDeCursoInferior
        this.FimDeCursoSuperior = fimDeCursoSuperior
        this.Emergencia = emergencia
        this.ReleDesce = releDesce
        this.ReleSobe = releSobe
        this.Bimanual = bimanual

        this.EmergenciaAcionada = false
    }

    /**
     * Atua na descida do motor, até identificar o acionamento do fim de curso, ou estouro de timeout.
     * 
     * @param {function} callback 
     * @param {number} timeOut 
     */
    DesceMotor(callback, timeOut = 5000) {
        Reles.LigaReles(this.ReleDesce, () => {
            let aguardaFechamento = setInterval(() => {
                if (this.FimDeCursoInferior) {
                    clearInterval(aguardaFechamento)
                    clearTimeout(timeOutFechamento)
                    callback(true)
                }
            }, 100)
            let timeOutFechamento = setTimeout(() => {
                clearInterval(aguardaFechamento)
                callback(false)
            }, timeOut)
        })
    }

    /**
     * Atua na subida do motor, até identificar o acionamento do fim de curso, ou estouro de timeout.
     * 
     * @param {function} callback 
     * @param {number} timeOut 
     */
    SobeMotor(callback, timeOut = 5000) {
        Reles.LigaReles(this.ReleSobe, () => {
            let aguardaFechamento = setInterval(() => {
                if (this.FimDeCursoSuperior) {
                    clearInterval(aguardaFechamento)
                    clearTimeout(timeOutFechamento)
                    callback(true)
                }
            }, 100)
            let timeOutFechamento = setTimeout(() => {
                clearInterval(aguardaFechamento)
                callback(false)
            }, timeOut)
        })
    }

    /**
     * Inicia monitoramento da entrada informada, caso desacionada, trava a execução do script
     * 
     * OBS: por segurança, só é aceito no monitoramento o DESACIONAMENTO da entrada.
     * 
     * @param {string} entrada 
     * @param {number} interval 
     */
    ObserverEmergencia(entrada = this.Emergencia, interval = 300) {

        setInterval(() => {
            if (!pvi.daq.in[entrada].value) {
                pvi.runInstructionS("RESET", [])
                location.reload()
            }
        }, interval)
    }

    /**
     * Inicia monitoramento da entrada informada, caso desacionada, trava a execução do script
     *  
     * @param {string} entrada 
     * @param {number} interval 
     */
    ObserverBimanual(callback, entrada = this.Bimanual, interval = 300, timeout = 15000, nivelLogico = true) {

        if (pvi.daq.in[entrada].value == nivelLogico) {
            callback(true)
        }

        setTimeout(() => {
            callback(false)
        }, timeout)
    }
}

Exemplo de Utilização

//Main.js

class Main {
    constructor() {
        this.STD = new SmartTestDeviceControl([1], [3], "ac5", "ac6", "dc2", "dc1")
    }

    MaquinaDeEstados(estado) {
        switch (estado) {

            case "Bimanual":
                UI.setMsg("Coloque o controlador na base e pressione o bimanual.")

                //verifica se o motor está na posição inicial
                if (pvi.daq.in[this.STD.FimDeCursoSuperior].value) {

                    //aguarda acionamento do bimanual para atuar no motor
                    this.STD.ObserverBimanual((retornoBimanual) => {
                        if (retornoBimanual) {

                            //Atua na descida do motor
                            this.STD.DesceMotor((retornoDescida) => {

                                if (retornoDescida) {
                                    //segue o teste..
                                }
                                else {
                                    //seta as devidas falhas
                                    //segue o teste..
                                }
                            })
                        } else {
                            //seta as devidas falhas
                            //segue o teste..
                        }
                    })

                } else {

                    //Atua na subida do motor
                    this.STD.SobeMotor((retornoSubida) => {

                        if (retornoSubida) {

                            //promove recursão do estado
                            this.MaquinaDeEstados(MaqEstado.Att(this.Estados, "Executar"))

                        } else {
                            //seta as devidas falhas
                            //segue o teste..
                        }
                    })
                }
                break
        }
    }
}