IEnumerator PrepareRemote(string path, int count) { OutResult <List <GameObject> > result = new OutResult <List <GameObject> >(); yield return(StartCoroutine(Service.bundle.Instantiate(path, count, result))); for (int i = 0; i < result.value.Count; i++) { GameObject itemObj = result.value[i]; if (itemObj == null) { continue; } GoItem item = itemObj.GetComponent <GoItem>(); if (item == null) { logger.LogError("Doesn't have GoItem:" + path); } MatchParent(item); item.transform.localPosition = Vector3.up * 9999; itemObj.SetActive(true); item.resourcePath = path; item.Prepare(); Return(item, prepareTime); } }
IEnumerator MakeRemote(string path, OutResult <GameObject> result) { #if !UNITY_EDITOR if (Service.bundle.IsRemoteResource(path) == false) { logger.LogError("It is not a remote resource:" + path); yield break; } #endif yield return(StartCoroutine(Service.bundle.Instantiate(path, result))); if (result.value == null) { yield break; } GameObject itemObj = result.value; GoItem item = itemObj.GetComponent <GoItem>(); if (item == null) { logger.LogError("Doesn't have GoItem:" + path); yield break; } item.resourcePath = path; }
private static void HKCameraCltr_HardTriggerEvent(object sender, HObject e) { string camName = (string)sender; HObject inImage = e; SoftwareOnceEvent?.Invoke(null, new OutImage(camName, inImage)); foreach (var testItem in UseTestItems) { if (testItem.camName == camName) { testItem.Find(inImage); testItem.Show(inImage, out HObject resultImage); OutResult outResult = new OutResult() { TestItemName = testItem.name, CamName = testItem.camName, IsOK = testItem.isOK, ResultMessage = testItem.outMessage, OriginalImage = new OutImage(testItem.camName, inImage), EffectImage = new OutImage(testItem.camName, resultImage) }; DetectionOnceEvent?.Invoke(null, outResult); } } inImage.Dispose(); }
public IEnumerator GetRemote <T>(string path, GameObject parent, OutResult <T> result) where T : GoItem { if (storedObjects.ContainsKey(path)) { Stack stack = storedObjects[path]; GameObject stored = PopGameObjectFromStack(stack); if (stored != null) { SetReady(stored, parent); result.value = stored.GetComponent <T>(); yield break; } } OutResult <GameObject> res = new OutResult <GameObject>(); yield return(StartCoroutine(MakeRemote(path, res))); GameObject newly = res.value; if (newly == null) { yield break; } SetReady(newly, parent); result.value = newly.GetComponent <T>(); }
private static void runCheck(String file) { Console.WriteLine("File " + Path.GetFileName(file) + " come. Start work"); // try parse file Thread.Sleep(1000); try { parseJSON(file); Console.Write("==> Try parse compile... "); String compileStatus = compileCode(param); string resultFolder = globalConfig["paths"]["results"]; OutResult outResult; if (compileStatus == "ok") { Console.WriteLine("DONE."); Console.Write("==> Run tests..."); outResult = runTests(param); Console.WriteLine("DONE."); } else { Console.WriteLine("error: " + compileStatus); outResult = new OutResult() { checkId = param.checkId, isError = true, error = compileStatus }; } Console.Write("==> Write data to result.txt ... "); writeResult(param.checkId, outResult); Console.WriteLine("DONE."); } catch (Exception ex) { Console.Write("==> Write data to result.txt ... "); OutResult outResult = new OutResult(); outResult.checkId = param.checkId; outResult.isError = true; outResult.parse_dec = param.parseDec; outResult.error = ex.Message; outResult.results = null; writeResult(param.checkId, outResult); Console.Write("Can't read file " + file + ": " + ex.Message); } Console.WriteLine("CheckDone"); // rename file File.Move(file, file.Substring(0, file.Length - 3) + "old"); Console.WriteLine("####### Wait next #########"); }
/// <summary> /// 基类获取返回数据对象 /// </summary> /// <returns></returns> protected OutResult ReturnObj() { OutResult outJson = new OutResult(); outJson.data = Data; outJson.code = (int)Code; outJson.msg = Code.GetDesc() + (string.IsNullOrEmpty(ExMsg) ? "" : ExMsg); return(outJson); }
//错误 public JsonResult Result_Error(string msg = "") { OutResult outJson = new OutResult(); outJson.data = null; outJson.code = (int)ResultCode.UnknowError; outJson.msg = msg; return(this.ObjToJson(outJson)); }
//成功 public JsonResult Result_Ok(object data, string msg = "请求成功") { OutResult outJson = new OutResult(); outJson.data = data; outJson.code = (int)ResultCode.Success; outJson.msg = msg; return(this.ObjToJson(outJson)); }
public override void OnActionExecuted(HttpActionExecutedContext context) { // 若发生例外则不在这边处理 if (context.Exception != null) { return; } base.OnActionExecuted(context); OutResult result = new OutResult(); if (context.Response.IsSuccessStatusCode) { result.code = OutCode.成功; } else { result.code = OutCode.失败; } // 取得由 API 返回的状态代码 //result.Status = actionExecutedContext.ActionContext.Response.StatusCode; // 取得由 API 返回的资料 object data = null; bool isStandard = true; if (context.ActionContext.Response.Content != null) { data = context.ActionContext.Response.Content.ReadAsAsync <object>().Result; if (data != null && data is OutResult) { var tmp = data as OutResult; result = tmp; } else { if (context.ActionContext.Response.StatusCode == System.Net.HttpStatusCode.BadRequest) { result.msg = "请求无效"; } else { //result.data = data; result = null; isStandard = false; } } } // 重新封装回传格式 context.Response = context.Request.CreateResponse(System.Net.HttpStatusCode.OK, isStandard ? result : data); }
IEnumerator MakeRemoteStuff() { // load remote scene yield return Service.Run(Service.bundle.LoadLevelAdditiveAsync("BootStage1")); // load remote prefabs var cubeOut = new OutResult<BootCubePlayer>(); yield return Service.Run(Service.goPooler.GetRemote<BootCubePlayer>("Prefabs/Cube", null, cubeOut)); BootCubePlayer cube = cubeOut.value; cube.transform.localPosition = new Vector3(0, 3, 0); }
public async Task <OutResult> DeleteApplication(int id) { var app = await GetById(id); if (!app.Any()) { return(OutResult.Error_TryingToDeleteNull()); } await _applicationRepository.Delete(app); return(OutResult.Success_Deleted()); }
private static void writeResult(int checkId, OutResult outResult) { string resultFolder = globalConfig["paths"]["results"]; if (checkId >= 0 && !File.Exists(resultFolder + $@"result_{checkId}.txt")) { using (FileStream fs = File.Create(resultFolder + $@"result_{checkId}.txt")) { Byte[] input = new UTF8Encoding(true).GetBytes(JsonConvert.SerializeObject(outResult)); fs.Write(input, 0, input.Length); } } }
/// <summary> /// 获取Token信息 /// </summary> /// <param name="inToken">Token入参</param> /// <returns></returns> public async Task <JsonResult> Index(InToken inToken) { var dic = new Dictionary <string, string>(); dic.Add("201609021530300235", "0987654321"); var result = new OutResult(); var dateTime = DateTime.Now; if ( !DateTime.TryParseExact(inToken.SignTime, "yyyyMMddHHmmss", System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.None, out dateTime)) { result.code = (int)ResultCode.ParameterError; result.msg = "签名时间不正确"; return(Json(result)); } var nowTime = DateTime.Now; if (dateTime > nowTime.AddMinutes(5) || dateTime < nowTime.AddMinutes(-5)) { result.code = (int)ResultCode.SignTimeError; result.msg = "签名时间与服务器时间相差5分钟"; return(Json(result)); } var sign = EncryHelper.MD5(inToken.AppId + inToken.SignTime + inToken.Random + dic[inToken.AppId]); if (sign != inToken.SignCode) { result.code = (int)ResultCode.SignError; result.msg = "签名错误"; return(Json(result)); } //生成token var token = Guid.NewGuid().ToString().Replace("-", ""); _logger.LogDebug("token生成:" + token + " appid:" + inToken.AppId); //将token存入缓存 RedisHelper.SetToken(token, inToken.AppId, TimeSpan.FromMinutes(300)); _logger.LogDebug("token存入Redis:" + token + " appid:" + inToken.AppId); return (Json(new OutResult { data = token })); }
IEnumerator MakeRemoteStuff() { // load remote scene yield return(Service.Run(Service.bundle.LoadLevelAdditiveAsync("BootStage1"))); // load remote prefabs var cubeOut = new OutResult <BootCubePlayer>(); yield return(Service.Run(Service.goPooler.GetRemote <BootCubePlayer>("Prefabs/Cube", null, cubeOut))); BootCubePlayer cube = cubeOut.value; cube.transform.localPosition = new Vector3(0, 3, 0); }
public override void Execute() { if (ArgsCount() == 0) { Print("\"" + cvar.name + "\" is:\"" + cvar.value + "\" default:\"" + cvar.defaultValue + "\""); return; } if (ArgsCount() != 1) { Print("usage "); return; } if (cvar.IsFloat()) { OutResult result = OutResult.instance; float value = FloatArg(0, result); if (result.succeed) { SetValue(value); } else { Print("Can't set float value"); } } else if (cvar.IsInt()) { OutResult result = OutResult.instance; int value = IntArg(0, result); if (result.succeed) { SetValue(value); } else { Print("Can't set int value"); } } else { String value = StrArg(0); SetValue(value); } }
public async Task <OutResult> AddPermissionToGroup(int groupId, int permissionId) { var group = await GetById(groupId); if (!group.Any()) { return(OutResult.Failed("Group not found")); } var permission = _permissionManager.Roles.Where(x => x.Id == permissionId); if (!permission.Any()) { return(OutResult.Failed("Permission not found")); } var groupToAdd = group.First(); var permissionToAdd = permission.First(); var groupPermission = new GroupPermission() { Group = groupToAdd, Permission = permissionToAdd, GroupId = groupId, PermissionId = permissionId }; if (groupToAdd.GroupPermissions.Contains(groupPermission)) { return(OutResult.Failed("Group Already have Permission")); } var permissionResult = await _groupPermissionRepository.Insert(groupPermission); var groupUsers = groupToAdd.UsersInGroup.Select(x => x.User); foreach (var user in groupUsers) { if (!await _applicationUserManager.IsInRoleAsync(user, permissionToAdd.Name)) { await _applicationUserManager.AddToRoleAsync(user, permissionToAdd.Name); } } return(OutResult.Success_Updated()); }
public async Task <OutResult> RemovePermission(string name) { var permissionExists = await _permissionManager.FindByNameAsync(name); if (permissionExists == null) { return(OutResult.Failed("Permission not Exists")); } var groupWithPermissions = permissionExists.GroupPermissions.Select(x => x.Group); foreach (var group in groupWithPermissions) { await _groupService.RemovePermissionFromGroup(group.Id, permissionExists.Id); } return(OutResult.Success_Deleted()); }
public async Task <OutResult> AddPermission(string name, string description) { var permissionExists = await _permissionManager.FindByNameAsync(name); if (permissionExists != null) { return(OutResult.Error_AlreadyExists()); } var newPermission = new AppPermission() { Name = name, Description = description, CreatedAt = DateTime.Now, UpdatedAt = DateTime.Now }; var result = await _permissionManager.CreateAsync(newPermission); return(result.Succeeded ? OutResult.Success_Created() : OutResult.Failed("Failed to add Permission")); }
private void Button_Click(object sender, RoutedEventArgs e) { if (!int.TryParse(InputCount.Text?.Trim(), out int count)) { count = 1; } if (count <= 0) { count = 1; } StringBuilder sb = new StringBuilder(); for (int i = 0; i < count; i++) { var nid = Id32.NewId(); sb.Append(nid).AppendLine(); } OutResult.Clear(); OutResult.AppendText(sb.ToString()); }
public virtual async Task <OutResult> Update(T entity) { try { if (entity == null) { return(OutResult.Error_TryingToUpdateNull()); } AddUpdateEntityWithDateTime(entity); this.Entities.Update(entity); await this._context.SaveChangesAsync(); } catch (Exception dbEx) { var error = $"Failed while updating " + typeof(T).FullName + ":: " + GetFullErrorText(dbEx); return(new OutResult(error, dbEx.ToString(), false)); } return(OutResult.Success_Updated()); }
public virtual async Task <OutResult> Delete(IEnumerable <T> entities) { try { if (entities == null) { return(OutResult.Error_TryingToDeleteNull()); } foreach (var entity in entities) { this.Entities.Remove(entity); } await this._context.SaveChangesAsync(); } catch (Exception dbEx) { var error = $"Failed while Deleting " + typeof(T).FullName + ":: " + GetFullErrorText(dbEx); return(new OutResult(error, dbEx.ToString(), false)); } return(OutResult.Success_Deleted()); }
public virtual async Task <OutResult> Insert(IEnumerable <T> entities) { try { if (entities == null) { return(OutResult.Error_TryingToInsertNull()); } AddInsertEntityWithDateTime(entities); foreach (var entity in entities) { await this.Entities.AddAsync(entity); } await this._context.SaveChangesAsync(); } catch (Exception dbEx) { var error = $"Failed while inserting " + typeof(T).FullName + ":: " + GetFullErrorText(dbEx); return(new OutResult(error, dbEx.ToString(), false)); } return(OutResult.Success_Created()); }
/// <summary> /// 返回结果扩展 /// </summary> /// <param name="controller"></param> /// <param name="outResult"></param> /// <returns></returns> public static JsonResult ReturnJsonResult(this Controller controller, OutResult outResult) { return(controller.Json(outResult)); }
/// <summary> /// 触发检测,更具当前切换的型号模板进行拍照识别 /// 该方法会开辟新线程 /// 该方法不会返回识别结果,识别结果需要在调用WaitDetectionResult获取 /// 同一时刻只能有一个TriggerDetection在运行 /// </summary> /// <returns></returns> public static bool TriggerDetection() { if (!MyRun.havInit) { StrErrorMsg = "视觉模块未初始化"; return(false); } if (DetectionThread != null && DetectionThread.IsAlive) { StrErrorMsg = "上一次拍照识别并未结束"; return(false); } DetectionThread = new Thread(() => { //防止之前暂停的信号影响到这次检测 stopDetectionSignal.Reset(); OutResults.Clear(); ConcurrentDictionary <string, HObject> camImages = new ConcurrentDictionary <string, HObject>(); ConcurrentDictionary <string, HObject> matchImages = new ConcurrentDictionary <string, HObject>(); ConcurrentDictionary <string, HTuple> matchHomMat2D = new ConcurrentDictionary <string, HTuple>(); bool hav = true; while (true) { Parallel.ForEach(UseCamsName.ToArray(), camName => { if (MyRun.TriggerCamera(camName, out HObject camImage)) { if (camImage != null) { //待升级:这里添加对图片质量的判断,如果图片模糊,撕裂则将图片丢弃 camImages.AddOrUpdate(camName, camImage, (k, v) => v = camImage); } } else { StrErrorMsg = MyRun.StrErrorMsg; } }); //待升级:这里添加对产品是否到位的判断,通过特征检测的方式实现,不符合要求的则将图片丢弃 //待升级:这里添加模板匹配矫正图片的功能,检测项检测时使用的是矫正后的图片 //要将矫正的变换参数保存,界面显示的需要是把ROI区域等检测效果进行矫正的图片 Parallel.ForEach(UseMatchingFun.ToArray(), matchingFun => { if (!matchingFun.matching.Name.Equals("无模板定位") && camImages.TryGetValue(matchingFun.matching.CamName, out HObject camImage)) { int nRet = matchingFun.Find(camImage, out HObject matchImage); if (nRet == 0) { matchImages.AddOrUpdate(matchingFun.matching.Name, matchImage, (k, v) => v = matchImage); matchHomMat2D.AddOrUpdate(matchingFun.matching.Name, matchingFun.homMat2D, (k, v) => v = matchingFun.homMat2D); } SoftwareOnceEvent?.Invoke(null, new OutImage(matchingFun.matching.CamName, camImage)); } }); Parallel.ForEach(UseTestItems.ToArray(), testItem => { if (testItem.hav) { return; } HObject inImage = null; if (testItem.matchName.Equals("无模板定位")) { if (camImages.TryGetValue(testItem.camName, out inImage)) { testItem.Find(inImage); testItem.Show(inImage, out HObject resultImage); testItem.hav = true; OutResult outResult = new OutResult() { TestItemName = testItem.name, CamName = testItem.camName, IsOK = testItem.isOK, ResultMessage = testItem.outMessage, OriginalImage = new OutImage(testItem.camName, inImage), EffectImage = new OutImage(testItem.camName, resultImage) }; DetectionOnceEvent?.Invoke(null, outResult); OutResults.Add(outResult); } } else { if (matchImages.TryGetValue(testItem.matchName, out inImage)) { testItem.Find(inImage); camImages.TryGetValue(testItem.camName, out inImage); testItem.Show(inImage, matchHomMat2D[testItem.matchName], out HObject resultImage); testItem.hav = true; OutResult outResult = new OutResult() { TestItemName = testItem.name, CamName = testItem.camName, IsOK = testItem.isOK, ResultMessage = testItem.outMessage, OriginalImage = new OutImage(testItem.camName, inImage), EffectImage = new OutImage(testItem.camName, resultImage) }; DetectionOnceEvent?.Invoke(null, outResult); OutResults.Add(outResult); } } }); foreach (var camImage in camImages.Values) { camImage.Dispose(); } hav = true; foreach (var testItem in UseTestItems.ToArray()) { hav &= testItem.hav; } if (hav) { foreach (var testItem in UseTestItems.ToArray()) { testItem.hav = false; } break; } if (stopDetectionSignal.WaitOne(20)) { break; } Thread.Sleep(20); } }) { IsBackground = true }; DetectionThread.Start(); return(true); }
/// <summary> /// 触发检测,更具当前切换的型号模板进行拍照识别 /// 阻塞线程直到拍照识别结束,返回TriggerDetection的结果 /// 同一时刻只能有一个TriggerDetection在运行 /// </summary> /// <param name="outResult"></param> /// <returns></returns> public static bool TriggerDetection(out List <OutResult> outResults) { outResults = null; if (!MyRun.havInit) { StrErrorMsg = "视觉模块未初始化"; return(false); } if (DetectionThread != null && DetectionThread.IsAlive) { StrErrorMsg = "上一次拍照识别并未结束"; return(false); } OutResults.Clear(); ConcurrentDictionary <string, HObject> camImages = new ConcurrentDictionary <string, HObject>(); bool hav = true; while (true) { Parallel.ForEach(UseCamsName.ToArray(), camName => { if (MyRun.TriggerCamera(camName, out HObject camImage)) { if (camImage != null) { //待升级:这里添加对图片质量的判断,如果图片模糊,撕裂则将图片丢弃 camImages.AddOrUpdate(camName, camImage, (k, v) => v = camImage); } } else { StrErrorMsg = MyRun.StrErrorMsg; } }); //待升级:这里添加对产品是否到位的判断,通过特征检测的方式实现,不符合要求的则将图片丢弃 //待升级:这里添加模板匹配矫正图片的功能,检测项检测时使用的是矫正后的图片, //要将矫正的变换参数保存,界面显示的需要是把ROI区域等检测效果进行矫正的图片 Parallel.ForEach(UseTestItems.ToArray(), testItem => { if (camImages.TryGetValue(testItem.camName, out HObject camImage)) { testItem.Find(camImage); testItem.Show(camImage, out HObject resultImage); testItem.hav = true; OutResult outResult = new OutResult() { TestItemName = testItem.name, CamName = testItem.camName, IsOK = testItem.isOK, ResultMessage = testItem.outMessage, OriginalImage = new OutImage(testItem.camName, camImage), EffectImage = new OutImage(testItem.camName, resultImage) }; DetectionOnceEvent?.Invoke(null, outResult); OutResults.Add(outResult); } }); foreach (var camImage in camImages.Values) { camImage.Dispose(); } hav = true; foreach (var testItem in UseTestItems.ToArray()) { hav &= testItem.hav; } if (hav) { foreach (var testItem in UseTestItems.ToArray()) { testItem.hav = false; } break; } if (stopDetectionSignal.WaitOne(20)) { break; } Thread.Sleep(20); } outResults = OutResults; return(true); }
public IEnumerator Instantiate(string path, int count, OutResult <List <GameObject> > result) { string name = path; int index = name.LastIndexOf("/"); if (index > 0) { name = name.Substring(index + 1); } #if UNITY_EDITOR && BOOT_BUNDLE_EDIT string realPath = "Assets/Resources2Pack/" + path + ".prefab"; GameObject obj = UnityEditor.AssetDatabase.LoadAssetAtPath <GameObject>(realPath); if (obj == null) { logger.LogError("Can not load:" + realPath); yield break; } result.value = new List <GameObject>(); for (int i = 0; i < count; i++) { GameObject item = GameObject.Instantiate(obj) as GameObject; result.value.Add(item); } yield break; #endif if (remoteResources.ContainsKey(name) == false) { logger.LogError("It's not a remote resource: " + path); yield break; } while (nowLoading.Contains(path) == true) { yield return(new WaitForEndOfFrame()); } nowLoading.Add(path); uint crc = remoteResources[name]; string url = cdnResources + name + ".unity3d"; using (WWW www = WWW.LoadFromCacheOrDownload(url, Version.remoteBundleVersion, crc)) { yield return(www); if (www.error != null) { logger.LogError(www.error); nowLoading.Remove(path); yield break; } AssetBundle bundle = www.assetBundle; bundle.LoadAllAssets(); GameObject res = bundle.LoadAsset(name, typeof(GameObject)) as GameObject; if (res == null) { nowLoading.Remove(path); yield break; } result.value = new List <GameObject>(); for (int i = 0; i < count; i++) { GameObject item = GameObject.Instantiate(res) as GameObject; result.value.Add(item); } bundle.Unload(false); } nowLoading.Remove(path); }
public IEnumerator Instantiate(string path, OutResult <GameObject> result) { string name = path; int index = name.LastIndexOf("/"); if (index > 0) { name = name.Substring(index + 1); } #if UNITY_EDITOR && BOOT_BUNDLE_EDIT string realPath = "Assets/Resources2Pack/" + path + ".prefab"; result.value = GameObject.Instantiate(UnityEditor.AssetDatabase.LoadAssetAtPath <GameObject>(realPath)) as GameObject; yield break; #endif if (remoteResources.ContainsKey(name) == false) { logger.LogError("It's not a remote resource: " + path); yield break; } float startTime = Time.realtimeSinceStartup; while (nowLoading.Contains(path) == true) { yield return(new WaitForEndOfFrame()); float pastTime = Time.realtimeSinceStartup - startTime; if (pastTime > 3f) { break; } } if (nowLoading.Contains(path) == false) { nowLoading.Add(path); } uint crc = remoteResources[name]; string url = cdnResources + name + ".unity3d"; using (WWW www = WWW.LoadFromCacheOrDownload(url, Version.remoteBundleVersion, crc)) { yield return(www); if (www.error != null) { logger.LogError(www.error + ": " + name); nowLoading.Remove(path); yield break; } AssetBundle bundle = www.assetBundle; bundle.LoadAllAssets(); GameObject obj = bundle.LoadAsset(name, typeof(GameObject)) as GameObject; if (obj == null) { nowLoading.Remove(path); yield break; } result.value = GameObject.Instantiate(obj) as GameObject; bundle.Unload(false); } nowLoading.Remove(path); }
protected float FloatArg(int index, OutResult result) { String str = StrArg(index); return(StringUtils.ParseFloat(str, result)); }
protected int IntArg(int index, OutResult result) { String str = StrArg(index); return(StringUtils.ParseInt(str, result)); }
/// <summary> /// 接口返回值扩展 /// </summary> /// <param name="controller"></param> /// <param name="result"></param> /// <returns></returns> public static JsonResult ObjToJson(this Controller controller, OutResult result) { return(controller.Json(result)); }