首页 > 其他分享 >信号自动切换的功能

信号自动切换的功能

时间:2023-12-04 20:11:21浏览次数:21  
标签:Source length 自动 切换 信号 integer saved order

1、需求说明

  需求:         很多时候会遇到矩阵的自动切换逻辑的问题,以下分享两个比较常用的宏模块说明        自动切换信号源
  •     当检测到有1路信号输入时,两个输出为复制模式
  •     当检测到有2路信号输入时,两个输出分别输出2路信号
  •     当检测到有第3路信号输入时,两个输出显示2和3
  •     当拔掉第3路信号输入时,两个输出为复制模式显示
  • 分析:
  •  

     

   代码实例如下
#DEFINE_CONSTANT num 9
    DIGITAL_INPUT Video_Source_Detected[num];
    ANALOG_OUTPUT Video_out[2];

integer saved[2];

//定义一个方法,
function dispaly()
{
    Video_out[1] = saved[0];

    Video_out[2] = saved[1];    
}

//事件
push Video_Source_Detected
{
    integer i;    
    i = GetLastModifiedArrayIndex();
    if(saved[1] = 0)           //如果第二个屏没信号,把push得到的信号给到屏上,i表示按下的是第几个
    {
        saved[1] = i;
    }
    saved[0] = saved[1];      //
    saved[1] = i;
    dispaly();
}
//事件释放
release Video_Source_Detected
{
    integer i, j;
    i = GetLastModifiedArrayIndex();       //记录释放位置
    for(j = 0 to 1)                    
    {
        if(saved[j] = i)                  //信号记录在数组save里了,可以循环save数组找到释放的位置,把当前的信号为0
        {
            saved[j] = 0;
        }        
    }
    if(saved[0] = 0)                     //save[0] = 0 没有信号
    {
        saved[0] = saved[1];
    }
    else if(saved[1] = 0)
    {
        saved[1] = saved[0];
    }
    dispaly();
}

2、用字符串来记录方式

  •  在此之前先明白一个概念:1、byte表示的是字符 2、integer表十进制的整形数据 

  •  

    代码如下:

    DIGITAL_INPUT Signal_Async[4];
    ANALOG_OUTPUT Source_Left,Source_Right;
    STRING_OUTPUT DEBUG;
    STRING order[4];  //记录
    //定义方法
    Function switchSignal()
    {
        integer length;
        DEBUG = order;
        length = len ( order );          //判断数据长度就可以知道当前信号源数量
        if ( length >= 2 )
        {
            Source_Left = atoi ( mid ( order , length - 1 , 1 ) );
            Source_Right = atoi ( right ( order , 1 ) );            
        }
        else if ( length = 1 )
        {
            Source_Left = atoi ( order );
            Source_Right = atoi ( order );
        }
        else if ( length = 0 )
        {
            Source_Left = 0;
            Source_Right = 0;
        }
    }
    PUSH Signal_Async
    {
        integer mark;
        mark = getlastmodifiedarrayindex();
        order = order + itoa(mark);
        switchSignal();
    }
    RELEASE Signal_Async
    {
        integer i,length,mark;
        mark = getlastmodifiedarrayindex();
        length = len ( order );
        if ( length = 1 || length = 0 )
            order = "";
        else
        {
            for ( i = 1 to length )
            {
                if ( byte ( order , i ) - 48 = mark )
                    break;        
            }
            order = left ( order , i - 1 ) + right ( order , length - i );
        }
        switchSignal();
    }
    
    Function Main()
    {
        order = "";
    }

标签:Source,length,自动,切换,信号,integer,saved,order
From: https://www.cnblogs.com/zp513/p/17875806.html

相关文章

  • vscode自动保存设置为afterDelay后prettier不生效
    "files.autoSave":"afterDelay""editor.formatOnSave":true这两个配置不能一起使用解决方法:1.将"afterDelay"修改为“onFocusChange"2.设置成onFocusChange或者onWindowChange3.关闭重启vscode 参考文件:files.autoSaveandeditor.formatOnSave  ......
  • MySQL系列之读写分离架构——Atlas介绍、安装配置、Atlas功能测试、生产用户要求、Atl
    文章目录1.Atlas介绍2.安装配置3.Atlas功能测试4.生产用户要求5.Atlas基本管理6.自动分表7.关于读写分离建议1.Atlas介绍Atlas是由Qihoo360,Web平台部基础架构团队开发维护的一个基于MySQL协议的数据中间层项目。它是在mysql-proxy0.8.2版本的基础上,对其......
  • 自动化集成有哪些典型应用场景?
    为什么要做自动化场景集成?主要分为以下几点:提高效率/减少错误:减少人工操作、人为错误、人力成本,提高生产效率、生产质量和稳定性。提高可靠性:提高系统的可靠性和稳定性,减少系统故障和停机时间。节约资源:节约能源和物料资源,降低生产成本。适应变化:快速适应市场变化和客户需求......
  • 基于DotNetty实现一个接口自动发布工具 - 通信实现
    基于DotNetty实现通信DotNetty:是微软的Azure团队,使用C#实现的Netty的版本发布。是.NET平台的优秀网络库。项目介绍OpenDeploy.Communication类库项目,是通信相关基础设施层Codec模块实现编码解码Convention模块定义约定,比如抽象的业务Handler,消息载体Ne......
  • 自动类型推导
    文章参考:爱编程的大丙(subingwen.cn)1.auto在C++11之前,auto和static相对应用于表示变量是自动存储的,但是非static局部变量默认都是自动存储的,auto因此显得额外鸡肋。C++11中对auto进行了扩展,使他能够自动推导变量的实际类型。1.1推导规则C++中auto并不是一种数据类型,而是......
  • js自动播放【轮播图】
    demo<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0"><title>AutoCarousel</tit......
  • 基于DotNetty实现一个接口自动发布工具 - 背景篇
    故事背景小公司,单体项目,接口和页面都在一起,生产和测试环境都是Windows服务器和IIS,本地编译完成,把相关的页面和程序集拷贝到服务器上,尤其是涉及到多个页面,一个个页面找到对应的位置,再到服务器上找到对应的位置拷贝进去,甚至还有备份等操作,不胜其烦,因为历史遗留原因,......
  • pipreqs 自动找到项目的所有组件和模块版本
    pipinstallpipreqs(适用于djangoFlask等)pipreqs./--encoding=utf-8找到当前项目目录下的所有组件和依赖H:\MyFlask>pipreqs./--encoding=utf-8十六.Flask基本项目目录搭建和pipreqs模块(组件和模块版本)virtualenv模块(创建虚拟环......
  • 《最新出炉》系列初窥篇-Python+Playwright自动化测试-35-处理web页面定位toast-上篇
    1.简介在使用appium写app自动化的时候介绍toast的相关元素的定位,在WebUI测试过程中,也经常遇到一些toast(出现之后一闪而过,不留下一点点痕迹),那么这个toast我们这边如何使用playwright进行定位测试呢?今天宏哥就分两篇介绍一下。2.什么是toast?Android中的Toast是一种简易的消......
  • 一个自动切换模块【苏】
    1、需求说明输入信号分别是1/2/3/4、输入就一个信号信号源的优先级从高到低,为1~4可以手动或自动切换两种方式代码如下#DEFAULT_VOLATILE#ENABLE_STACK_CHECKING#ENABLE_TRACEDIGITAL_INPUTEnable,_skip_,Video_Detecte[4];ANALOG_INPUTAin[2];ANALOG_OUTPUTou......