C# 控制科兴16路继电器

    /// <summary>
    /// 操作继电器
    /// </summary>
    /// <param name="isOpenOrClose">表示打开还是关闭</param>
    /// <param name="Ch">操作第几路继电器(从1到16)</param>
    private void OperationRelay(bool isOpenOrClose ,int Ch)
    {
        byte[] sBytes = new byte[] { 0xCC, 0xDD, 0xA1, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0x9E, 0x3C };
        if (Ch <= 8)
        {
            sBytes[4] = 0;
            sBytes[6] = 0;
            sBytes[5] = (byte)(0x01 << (Ch - 1));
            sBytes[7] = (byte)(0x01 << (Ch - 1));
        }
        else
        {
            sBytes[4] = (byte)(0x01 << (Ch - 9));
            sBytes[6] = (byte)(0x01 << (Ch - 9));
            sBytes[5] = 0;
            sBytes[7] = 0;
        }
        if (isOpenOrClose==false)
        {
            sBytes[4] = 0;
            sBytes[5] = 0;
        }
        sBytes[8] = SumCheck(sBytes, 2, 6);
        sBytes[9] = SumCheck(sBytes, 2, 7);
        string str = BitConverter.ToString(sBytes).Replace("-", " ");

        SendUdpMessage(sBytes);
        Debug.Log(str);
    }

    public void BtnOpenAllClick()
    {
        byte[] sBytes = new byte[] { 0xCC, 0xDD, 0xA1, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0x9E, 0x3C };
        SendUdpMessage(sBytes);
    }

    public void BtnCloseAllClick()
    {
        byte[] sBytes = new byte[] { 0xCC, 0xDD, 0xA1, 0x01, 0x00, 0x00, 0xFF, 0xFF, 0xA0, 0x40 };
        SendUdpMessage(sBytes);
    }

补充和校验的方法

    /// <summary>
    /// 和校验
    /// </summary>
    /// <param name="cBytes"></param>
    /// <param name="startIndex"></param>
    /// <param name="cLenth"></param>
    /// <returns></returns>
    private byte SumCheck(byte[] cBytes, int startIndex, int cLenth)
    {
        byte check = 0;
        if (cBytes.Length > 1)
        {
            for (int i = startIndex; i < startIndex + cLenth; i++)
            {
                check = (byte)((cBytes[i] + check) & 0xFF);
            }
        }
        return check;
    }

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值