24-ESP8266 SDK開発の基礎片--Android TCPクライアント。LEDの明るさを調整するためのWi-Fi制御出力PWMデューティサイクル

https://www.cnblogs.com/yangfengwu/p/11204436.html

誰かが私はチキンスープを必要とすると述べた....

私はハを考えて、私はそれの側面チキンスープについて質問しませんでした!

 

 

シークバーを追加

 

 スイッチ

 

 

 協定:

 00 01 70 70 C0 C0は、LED照明が高および低CRCで制御する
上位ビットと下位ビットCRCの外に出るために、LED 00 B0 01 B0 01 00

 

PWMデータ

01 CRC16パリティビットの最後の2ビットで高い正面及び低い(法令IEEE754によれば、MSB第低い後)は、4つのPWMデータに固定された後

コラム:いくつかの例、PWMデータが0から1000です

01 03 E8 00 00 B0 99注:03 E8 00 00 1000 B0 99のCRCテストデータポストに高い正面と低いため

1時01分F4 0時00分EC 59 500

01 64 00 00 00 F0 06100

01 00 00 00 00 19 0 C0

 

私たちは、CRCを生成するには、このツールを使用することができ、CRCは、我々はプログラムを書く検証するために使用されています。 

 

 注:01 03 E8 00 00 B0 99は、実際には2 0 01 03 E8 B0 99を保存することができます

しかし、私は4だから4でまだしてみましょうされている楽器のほとんどを使用していました

 

今Androidの終わりを作成する方法を見て

 

 

 

 

 今では誰もCRC計算のためのプログラムです、CRCデータ判定は、右のプログラムではありません

 

    /**
     * CRC检验值
     * @param modbusdata
     * @param length
     * @return CRC检验值
     */
    protected int crc16_modbus(byte[] modbusdata, int length)
    {
        int i=0, j=0;
        int crc = 0xffff;//有的用0,有的用0xff
        try
        {
            for (i = 0; i < length; i++)
            {
                //注意这里要&0xff,因为byte是-128~127,&0xff 就是0x0000 0000 0000 0000  0000 0000 1111 1111
                //参见:https://blog.csdn.net/ido1ok/article/details/85235955
                crc ^= (modbusdata[i]&(0xff));
                for (j = 0; j < 8; j++)
                {
                    if ((crc & 0x01) == 1)
                    {
                        crc = (crc >> 1) ;
                        crc = crc ^ 0xa001;
                    }
                    else
                    {
                        crc >>= 1;
                    }
                }
            }
        }
        catch (Exception e)
        {

        }

        return crc;
    }

    /**
     * CRC校验正确标志
     * @param modbusdata
     * @param length
     * @return 0-failed 1-success
     */
    protected int crc16_flage(byte[] modbusdata, int length)
    {
        int Receive_CRC = 0, calculation = 0;//接收到的CRC,计算的CRC

        Receive_CRC = crc16_modbus(modbusdata, length);
        calculation = modbusdata[length + 1];
        calculation <<= 8;
        calculation += modbusdata[length];
        if (calculation != Receive_CRC)
        {
            return 0;
        }
        return 1;
    }

 

 

先去烧壶水,今天需要熬夜写文章,测试东西....

おすすめ

転載: www.cnblogs.com/yangfengwu/p/11324411.html