차이
문서의 선택한 두 판 사이의 차이를 보여줍니다.
양쪽 이전 판 이전 판 | |||
ko:bs2_enabledevicelicense [2023/03/02 15:53] kkshin [샘플코드(C++)] |
ko:bs2_enabledevicelicense [2023/03/02 15:54] (현재) kkshin [샘플코드(C#)] |
||
---|---|---|---|
줄 100: | 줄 100: | ||
</file> | </file> | ||
==== 샘플코드(C#) ==== | ==== 샘플코드(C#) ==== | ||
- | <file csharp sample_setdebugfilelogex.cs> | + | |
- | const string CURRENT_DIR = "."; | + | <file csharp sample_bs2_enabledevicelicense.cs> |
- | const int MAX_SIZE_LOG_FILE = 100; // 100MB | + | BS2LicenseBlob licenseBlob = Util.AllocateStructure<BS2LicenseBlob>(); |
- | IntPtr ptrDir = Marshal.StringToHGlobalAnsi(CURRENT_DIR); | + | |
- | result = (BS2ErrorCode)API.BS2_SetDebugFileLogEx(Constants.DEBUG_LOG_OPERATION_ALL, Constants.DEBUG_MODULE_ALL, ptrDir, MAX_SIZE_LOG_FILE); | + | Console.WriteLine("Try adding a license"); |
- | Marshal.FreeHGlobal(ptrDir); | + | |
- | if (result != BS2ErrorCode.BS_SDK_SUCCESS) | + | Console.WriteLine("Enter the license type. (0: None, 1: Visual QR)"); |
- | { | + | Console.Write(">>>> "); |
- | Console.WriteLine("Got error({0}).", result); | + | licenseBlob.licenseType = Util.GetInput((UInt16)BS2LicenseType.VISUAL_QR_MASK); |
- | return; | + | |
- | } | + | Console.WriteLine("How many devices do you want to register?"); |
+ | Console.Write(">>>> "); | ||
+ | licenseBlob.numOfDevices = Util.GetInput((UInt16)1); | ||
+ | |||
+ | if (0 < licenseBlob.numOfDevices) | ||
+ | { | ||
+ | // Device ID | ||
+ | List<UInt32> listID = new List<UInt32>(); | ||
+ | UInt32 tempID = 0; | ||
+ | for (UInt16 idx = 0; idx < licenseBlob.numOfDevices; idx++) | ||
+ | { | ||
+ | Console.WriteLine(" Slave device ID #{0}", idx); | ||
+ | Console.Write(" >> "); | ||
+ | tempID = (UInt32)Util.GetInput(); | ||
+ | listID.Add(tempID); | ||
+ | } | ||
+ | |||
+ | byte[] byteListID = listID.SelectMany(BitConverter.GetBytes).ToArray(); | ||
+ | int byteCount = Marshal.SizeOf(typeof(UInt32)) * licenseBlob.numOfDevices; | ||
+ | |||
+ | licenseBlob.deviceIDObjs = Marshal.AllocHGlobal(byteCount); | ||
+ | Marshal.Copy(byteListID, 0, licenseBlob.deviceIDObjs, byteCount); | ||
+ | |||
+ | // License data | ||
+ | Console.WriteLine("Enter the path and name of license."); | ||
+ | Console.Write(">>>> "); | ||
+ | string licensePath = Console.ReadLine(); | ||
+ | if (!File.Exists(licensePath)) | ||
+ | { | ||
+ | Console.WriteLine("Invalid license Path"); | ||
+ | return; | ||
+ | } | ||
+ | |||
+ | if (Util.LoadBinary(licensePath, out licenseBlob.licenseObj, out licenseBlob.licenseLen)) | ||
+ | { | ||
+ | IntPtr resultObj = IntPtr.Zero; | ||
+ | UInt32 numOfResult = 0; | ||
+ | |||
+ | BS2ErrorCode result = (BS2ErrorCode)API.BS2_EnableDeviceLicense(sdkContext, deviceID, ref licenseBlob, out resultObj, out numOfResult); | ||
+ | Marshal.FreeHGlobal(licenseBlob.licenseObj); | ||
+ | |||
+ | if (BS2ErrorCode.BS_SDK_SUCCESS != result) | ||
+ | { | ||
+ | Console.WriteLine("Got error({0}).", result); | ||
+ | } | ||
+ | else | ||
+ | { | ||
+ | IntPtr curResult = resultObj; | ||
+ | int resultSize = Marshal.SizeOf(typeof(BS2LicenseResult)); | ||
+ | for (UInt32 idx = 0; idx < numOfResult; idx++) | ||
+ | { | ||
+ | BS2LicenseResult item = (BS2LicenseResult)Marshal.PtrToStructure(curResult, typeof(BS2LicenseResult)); | ||
+ | print(item, idx); | ||
+ | curResult += resultSize; | ||
+ | } | ||
+ | |||
+ | API.BS2_ReleaseObject(resultObj); | ||
+ | } | ||
+ | } // if (Util.LoadBinary(licensePath, out licenseBlob.licenseObj, out licenseBlob.licenseLen)) | ||
+ | } // if (0 < licenseBlob.numOfDevices) | ||
+ | |||
+ | Marshal.FreeHGlobal(licenseBlob.deviceIDObjs); | ||
</file> | </file> | ||
+ |