コード例 #1
0
        private int readuint32()
        {
            int _uint32;

            if (le)
            {
                _uint32 = LE.getuint32(data, datapos);
            }
            else
            {
                _uint32 = BE.getuint32(data, datapos);
            }
            datapos += 4;
            return(_uint32);
        }
コード例 #2
0
ファイル: Tag.cs プロジェクト: attackgithub/QSharp
            public void run()
            {
                try {
                    String lastValue = tag.value;
                    if (tag.parent == null)
                    {
                        if (!tag.c.IsConnected())
                        {
                            if (!tag.Connect())
                            {
                                return;
                            }
                        }
                    }
                    data = tag.Read();
                    if (data == null)
                    {
                        Console.WriteLine("Error:" + DateTime.GetMilliSecondsSinceEpoch() + ":data==null:host=" + tag.Host + ":tag=" + tag.Name);
                        return;
                    }
                    if (tag.IsBE())
                    {
                        switch (tag.Size)
                        {
                        case TagType.Bit: tag.value = data[0] == 0 ? "0" : "1"; break;

                        case TagType.Int8: tag.value = Byte.ToString(data[0]); break;

                        case TagType.Int16: tag.value = Int32.ToString(BE.getuint16(data, 0)); break;

                        case TagType.Int32: tag.value = Int32.ToString(BE.getuint32(data, 0)); break;

                        case TagType.Float32: tag.value = Float.ToString(Float.IntBitsToFloat(BE.getuint32(data, 0))); break;

                        case TagType.Float64: tag.value = Double.ToString(Double.LongBitsToDouble(BE.getuint64(data, 0))); break;
                        }
                    }
                    else
                    {
                        switch (tag.Size)
                        {
                        case TagType.Bit: tag.value = data[0] == 0 ? "0" : "1"; break;

                        case TagType.Int8: tag.value = Byte.ToString(data[0]); break;

                        case TagType.Int16: tag.value = Int32.ToString((short)LE.getuint16(data, 0)); break;

                        case TagType.Int32: tag.value = Int32.ToString(LE.getuint32(data, 0)); break;

                        case TagType.Float32: tag.value = Float.ToString(Float.IntBitsToFloat(LE.getuint32(data, 0))); break;

                        case TagType.Float64: tag.value = Double.ToString(Double.LongBitsToDouble(LE.getuint64(data, 0))); break;
                        }
                    }
                    lock (tag.pendingLock) {
                        if (tag.pending != null)
                        {
                            tag.Write(tag.pending);
                        }
                    }
                    if (tag.listener == null)
                    {
                        return;
                    }
                    if (lastValue == null || !tag.value.Equals(lastValue))
                    {
                        tag.listener.TagChanged(tag, tag.value);
                    }
                } catch (Exception e) {
                    Console.WriteLine(e.ToString());
                }
            }