其他分享
首页 > 其他分享> > 数字分解成数组

数字分解成数组

作者:互联网

伺服控制电缸运行转数,因夏天用电量较大,发生伺服卡顿现象,需要降低电缸运行速度,现在一帧跑的转数要分解成现在的五分之一的样子。速度太慢可能体感就没什么效果了,所以顺便更改成外部配置的加速度或者减速度。

下边标记代码 1.读取外部数据 外部数据配置["300","600","900","1200","1500","1800","2100","2400","2700","3000","3300","3600","3900","4000"] 使用json转换成数组  if (File.Exists("array.Config"))         {             StreamReader sr = new StreamReader("array.Config");             string arr = sr.ReadLine().Trim().ToString();             sr.Close();             numbers = JsonConvert.DeserializeObject<List<int>>(arr);         } 2.数字拆解方法     List<int> numbers = new List<int>();//数组在初始时获取     List<int> ResoleNum(int number)     {         int index = 0;//数组下标         int i = 0;//大小缓存         int value = 0;//当前相加数字         List<int> resoleNum = new List<int>();         int sign = number > 0 ? 1 : -1;//判断参数正负,因为电机需要下降所以需要添加负数         number = Mathf.Abs(number);         while (i < number)         {             if (index < numbers.Count)             {                 value = numbers[index];                 index++;             }             else             {                 value = numbers[numbers.Count - 1];             }             if ((i + value) > number)             {                 value = number - i;             }             i += value;             //Debug.Log(value);             resoleNum.Add(value*sign);//如果输入为负数则分解的所有数字都为负数         }         return resoleNum;     }   3.调用出资拆解并每帧发送给伺服电机 IEnumerator Movement(int target1,int target2,int target3) {         List<int> nums1 = ResoleNum(target1-Value_A);         List<int> nums2 = ResoleNum(target2-Value_B);         List<int> nums3 = ResoleNum(target3-Value_D);         List<List<int>> moves = new List<List<int>>();         moves.Add(nums1);         moves.Add(nums2);         moves.Add(nums3);         moves.OrderByDescending(m=>m.Count);         int index = 0;         while (index<moves[0].Count)         {             if (nums1.Count!=0&&index<nums1.Count)                 Value_A = Value_C += nums1[index];             if (nums2.Count != 0 && index < nums2.Count)                 Value_B = Value_F += nums2[index];             if (nums3.Count != 0 && index < nums3.Count)                 Value_D = Value_E += nums3[index];             Debug.Log("Value_A:"+ Value_A+ "    Value_B:"+ Value_B+ "    Value_D:"+ Value_D);             Work1();             index++;             yield return new WaitForEndOfFrame();         }     } 数组的数字可以随便写从小到大就是加速度 从个大到小就是就是减速度 都一样就是匀速

标签:分解成,index,数字,int,List,Value,Count,value,数组
来源: https://www.cnblogs.com/zhangjianxiong/p/15387220.html