| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109 | using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace WCS.Data{    public class PlcHelper    {        /// <summary>        /// Byte转二进制        /// </summary>        /// <param name="dbItem"></param>        /// <returns></returns>        public static string ByteToBinary(byte dbItem)        {            char[] cs = Convert.ToString(dbItem, 2).PadLeft(8, '0').ToCharArray();            Array.Reverse(cs);            string res = new string(cs);            return res;            //return Convert.ToString(dbItem, 2).PadLeft(8,'0');        }        /// <summary>        /// Bytes转二进制        /// </summary>        public static string BytesToBinary(byte[] dbItems)        {            string result = string.Empty;            foreach (byte item in dbItems)            {                result = result + ByteToBinary(item);            }            return result;        }        private static string ReadAlaramCode(string alarm)        {            string errorResult = string.Empty;            StringBuilder sb = new StringBuilder();            for (int i = 0; i < alarm.Length; i++)            {                int index = i + 1;                if (Convert.ToInt16(alarm.Substring(i, 1)) == 1)                {                    sb.Append(string.Format("{0},", index));                }            }            if (sb.Length > 0)            {                errorResult = sb.ToString().TrimEnd(',');            }            return errorResult;        }        /// <summary>        /// 查询报警信息        /// </summary>        /// <param name="dbItems"></param>        /// <returns></returns>        public static string ReadAlaramCodeByBytes(byte[] dbItems)        {            if (dbItems == null || dbItems.Count() <= 0)                return string.Empty;            else                return ReadAlaramCode(BytesToBinary(dbItems));        }        /// <summary>        /// Byte转换成二进制并取指定位置数字        /// </summary>        /// <param name="Db521Index">db模块</param>        /// <param name="startIndex">二进制截取的起始位置</param>        /// <returns></returns>        public static bool ByteToBool(byte dbItem, int startIndex)        {            int startPos = 0;            switch (startIndex)            {                case 0:                    startPos = 7;                    break;                case 1:                    startPos = 6;                    break;                case 2:                    startPos = 5;                    break;                case 3:                    startPos = 4;                    break;                case 4:                    startPos = 3;                    break;                case 5:                    startPos = 2;                    break;                case 6:                    startPos = 1;                    break;                case 7:                    startPos = 0;                    break;                default:                    startPos = -1;                    break;            }            return Convert.ToString(dbItem, 2)//转换成二进制            .PadLeft(8, '0')//字符串长度为8位,不够左边补零            .Substring(startPos, 1) == "0" ? false : true;        }    }}
 |