コード例 #1
0
        private DateTime ToDateTime(OpcRcw.Da.FILETIME ft)
        {
            long dwHighDateTime = ft.dwHighDateTime;
            long fileTime       = ((dwHighDateTime << 0x20) + ft.dwLowDateTime) + 0x430e234000L;

            return(DateTime.FromFileTimeUtc(fileTime));
        }
コード例 #2
0
        /// <summary>
        /// 获取时间戳
        /// </summary>
        /// <param name="ft"></param>
        /// <returns></returns>
        private DateTime ToDateTime(OpcRcw.Da.FILETIME ft)
        {
            long highbuf = (long)ft.dwHighDateTime;
            long buffer  = (highbuf << 32) + ft.dwLowDateTime;

            return(DateTime.FromFileTimeUtc(buffer).AddHours(8.0));
        }
コード例 #3
0
        private DateTime ToDateTime(OpcRcw.Da.FILETIME ft) //对OPCServer读出数据时间标签的计量形式转换,目前没有使用。
        {
            long highbuf = (long)ft.dwHighDateTime;
            long buffer  = (highbuf << 32) + ft.dwLowDateTime + 8 * 36000000000L;

            return(DateTime.FromFileTimeUtc(buffer));
        }
コード例 #4
0
ファイル: DxpSimpleClass.cs プロジェクト: kumo203/YascPcDcs
        // Token: 0x06000006 RID: 6 RVA: 0x00002170 File Offset: 0x00000370
        public bool Read(string[] sItemIDArray, out object[] oValueArray, out short[] wQualityArray, out OpcRcw.Da.FILETIME[] fTimeArray, out int[] nErrorArray)
        {
            int num = sItemIDArray.Count <string>();

            int[] array = new int[num];
            for (int i = 0; i < num; i++)
            {
                array[i] = 0;
            }
            int[] array2 = new int[num];
            oValueArray   = new object[num];
            wQualityArray = new short[num];
            fTimeArray    = new OpcRcw.Da.FILETIME[num];
            nErrorArray   = new int[num];
            bool result;

            try
            {
                IOPCItemIO iopcitemIO = (IOPCItemIO)this.m_OPCServer;
                IntPtr     intPtr;
                IntPtr     intPtr2;
                IntPtr     intPtr3;
                IntPtr     intPtr4;
                iopcitemIO.Read(num, sItemIDArray, array, out intPtr, out intPtr2, out intPtr3, out intPtr4);
                IntPtr intPtr5 = intPtr;
                IntPtr ptr     = intPtr3;
                Marshal.Copy(intPtr4, nErrorArray, 0, num);
                Marshal.Copy(intPtr2, wQualityArray, 0, num);
                for (int j = 0; j < num; j++)
                {
                    if (array2[j] == 0)
                    {
                        oValueArray[j] = Marshal.GetObjectForNativeVariant(intPtr5);
                    }
                    else
                    {
                        oValueArray[j] = "Error Value";
                    }
                    fTimeArray[j] = (OpcRcw.Da.FILETIME)Marshal.PtrToStructure(ptr, typeof(OpcRcw.Da.FILETIME));
                    DxpSimpleClass.VariantClear(intPtr5);
                    Marshal.DestroyStructure(ptr, typeof(OpcRcw.Da.FILETIME));
                    intPtr5 = (IntPtr)(intPtr5.ToInt32() + 16);
                    ptr     = (IntPtr)(ptr.ToInt32() + Marshal.SizeOf(typeof(OpcRcw.Da.FILETIME)));
                }
                Marshal.FreeCoTaskMem(intPtr);
                Marshal.FreeCoTaskMem(intPtr3);
                Marshal.FreeCoTaskMem(intPtr4);
                Marshal.FreeCoTaskMem(intPtr2);
                result = true;
            }
            catch (Exception ex)
            {
#if DEBUG
                Debug.WriteLine(ex);
#endif
                result = false;
            }
            return(result);
        }
コード例 #5
0
 internal static System.Runtime.InteropServices.FILETIME Convert(OpcRcw.Da.FILETIME input)
 {
     return(new System.Runtime.InteropServices.FILETIME {
         dwLowDateTime = input.dwLowDateTime, dwHighDateTime = input.dwHighDateTime
     });
 }