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;
- }
- }
- }
|