コード例 #1
0
        public static void StartTask(object param)
        {
            AclasSDK_Args args = (AclasSDK_Args)param;

            AclasSDK_Initialize(null);

            uint iAddr    = MakeHostToDWord(args.host);
            uint DataType = args.dataType;

            TASSDKDeviceInfo DeviceInfo = new TASSDKDeviceInfo();
            // 链接不上 bInfo = False;剩的去 ping 了
            // 链接超时时间、重试次数在 AclasSDK.ini 中配置
            // GetDeviceTimeOut=2000 + GetDeviceTryCount=2 --> 10 秒超时时间
            bool boolInfo = AclasSDK_GetDevicesInfo(iAddr, 0, ASSDK_ProtocolType_None, ref DeviceInfo);

            if (boolInfo)
            {
                Utils.StdoutToNodeJs(DISPATCH_CMD, new ResponseAclas(-1)); // 开始

                TASSDKOnProgressEvent OnProgress = new TASSDKOnProgressEvent(OnProgressEvent);

                AclasSDK_WaitForTask(AclasSDK_ExecTaskA(DeviceInfo.Addr, DeviceInfo.Port, DeviceInfo.ProtocolType, ASSDK_ProcType_Down, DataType, args.fileName, OnProgress, null));

                // 执行结束,直接释放
                AclasSDK_Finalize();
            }
            else
            {
                Utils.StdoutToNodeJs(DISPATCH_CMD, new ResponseAclas(501)); // 链接不上
            }
        }
コード例 #2
0
        static void Main(string[] args)
        {
            Console.OutputEncoding = Encoding.UTF8;

            if (args.Length == 0)
            {
                Utils.StdoutToNodeJs("error", new StateMsg(11, null, "入参错误: string[] args 不能为空"));
                return;
            }

            MainArgs = Utils.QueryString2Dict(args[0]);

            if (!MainArgs.ContainsKey("host") || !MainArgs.ContainsKey("filename") || !MainArgs.ContainsKey("type"))
            {
                Utils.StdoutToNodeJs("error", new StateMsg(12, null,
                                                           "入参错误: [host, filename, type] 必须传入!\n传入参数: " + args[0]));
                return;
            }

            AclasSDK_Args aclasArgs = new AclasSDK_Args(
                MainArgs["host"],
                Convert.ToUInt32(MainArgs["type"]),
                MainArgs["filename"]);

            // Aclas.StartTask(aclasArgs); // 20-07-29
            // 如果直接运行;在 electron 主进程中下发到 45 条后直接退出,还不报错!
            // 放在单独线程中运行即可解决 45 条意外退出问题
            Thread thread = new Thread(new ParameterizedThreadStart(Aclas.StartTask));

            thread.Start(aclasArgs);
        }