예제 #1
0
        async public Task <bool> Init(string[] dioReturnCode, string[] aioReturnCode, string[] counterReturnCode)
        {
            bool result = await Task.Run(() =>
            {
                if (dioReturnCode.Length != 2)
                {
                    return(false);
                }
                if (aioReturnCode.Length != 2)
                {
                    return(false);
                }
                if (counterReturnCode.Length != 3)
                {
                    return(false);
                }

                for (int i = 0; i < 2; i++)
                {
                    string returnCode;
                    var ret          = DioInit(Constants.DioDeviceName[i], out dioId[i], out returnCode);
                    dioReturnCode[i] = returnCode;
                    if (!ret)
                    {
                        return(false);
                    }
                }
                dio.SetIoDirection(dioId[Constants.DioInputIndex], 0);  //todo
                dio.SetIoDirection(dioId[Constants.DioOutputIndex], 5); //1:portAout, 2:portBout, 4:portCout then 5:portAandCout

                for (int i = 0; i < 2; i++)
                {
                    string returnCode;
                    var ret          = AioInit(Constants.AioDeviceName[i], out aioId[i], out returnCode);
                    aioReturnCode[i] = returnCode;
                    if (!ret)
                    {
                        return(false);
                    }
                }
                for (int i = 0; i < 2; i++)                                       //todo
                {
                    var ret = aio.SetAoRangeAll(aioId[i], (short)CaioConst.PM10); //0~10V
                    if (ret != (int)CdioConst.DIO_ERR_SUCCESS)
                    {
                        return(false);
                    }
                }

                {
                    string returnCode;
                    var ret = CounterBoardInit(out returnCode);
                    counterReturnCode[0] = returnCode;
                    if (!ret)
                    {
                        return(false);
                    }
                }
                for (int i = 0; i < 2; i++)
                {
                    string returnCode;
                    var ret = CounterCHSetting(Constants.CounterCH[i], out returnCode);
                    counterReturnCode[1 + i] = returnCode;
                    if (!ret)
                    {
                        return(false);
                    }
                }
                return(true);
            });

            return(result);
        }