23-2-21
This commit is contained in:
parent
744321ba09
commit
95dbfe3990
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1,37 @@
|
|||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<configuration>
|
||||
<configSections>
|
||||
|
||||
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
|
||||
|
||||
</configSections>
|
||||
<log4net>
|
||||
<root>
|
||||
<level value="ALL" />
|
||||
<appender-ref ref="SysAppender" />
|
||||
</root>
|
||||
<logger name="WebLogger">
|
||||
<level value="DEBUG" />
|
||||
</logger>
|
||||
<appender name="SysAppender" type="log4net.Appender.RollingFileAppender,log4net">
|
||||
<param name="File" value="App_Data/" />
|
||||
<param name="AppendToFile" value="true" />
|
||||
<param name="RollingStyle" value="Date" />
|
||||
<param name="DatePattern" value=""Logs_"yyyyMMdd".txt"" />
|
||||
<param name="StaticLogFileName" value="false" />
|
||||
<layout type="log4net.Layout.PatternLayout,log4net">
|
||||
<param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n" />
|
||||
<param name="Header" value=" ------------------------------------------------
" />
|
||||
<param name="Footer" value=" ------------------------------------------------
" />
|
||||
</layout>
|
||||
</appender>
|
||||
<appender name="consoleApp" type="log4net.Appender.ConsoleAppender,log4net">
|
||||
<layout type="log4net.Layout.PatternLayout,log4net">
|
||||
<param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n" />
|
||||
</layout>
|
||||
</appender>
|
||||
</log4net>
|
||||
<startup>
|
||||
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" />
|
||||
</startup>
|
||||
</configuration>
|
|
@ -0,0 +1,81 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace CRClib
|
||||
{
|
||||
#region 16位CRC校验【CRC】
|
||||
|
||||
/// <summary>
|
||||
/// 16位CRC校验
|
||||
/// </summary>
|
||||
internal class CRC
|
||||
{
|
||||
/// <summary>
|
||||
/// CRC校验,返回添加CRC校验码后的字符串
|
||||
/// 适用于485通讯,用于生成CRC校验码。输入16进制字符串;输出CRC校验码
|
||||
/// </summary>
|
||||
/// <param name="data">十六进制字符串</param>
|
||||
/// <returns>modbus-CRC校验码</returns>
|
||||
public static String CRCForModbus(string data)
|
||||
{
|
||||
//处理数字转换
|
||||
string sendBuf = data;
|
||||
string sendnoNull1 = sendBuf.Trim();//去掉字符串前后的空格
|
||||
string sendnoNull2 = sendnoNull1.Replace(" ", "");//去掉字符串中间的空格
|
||||
string sendNOComma = sendnoNull2.Replace(',', ' '); //去掉英文逗号
|
||||
string sendNOComma1 = sendNOComma.Replace(',', ' '); //去掉中文逗号
|
||||
string strSendNoComma2 = sendNOComma1.Replace("0x", ""); //去掉0x
|
||||
data = strSendNoComma2.Replace("0X", ""); //去掉0X
|
||||
|
||||
Byte[] crcbuf = strToHexByte(data);
|
||||
|
||||
//计算并填写CRC校验码
|
||||
Int32 crc = 0xffff;
|
||||
Int32 len = crcbuf.Length;
|
||||
for (Int32 n = 0; n < len; n++)
|
||||
{
|
||||
Byte i;
|
||||
crc = crc ^ crcbuf[n];
|
||||
for (i = 0; i < 8; i++)
|
||||
{
|
||||
Int32 TT;
|
||||
TT = crc & 1;
|
||||
crc = crc >> 1;
|
||||
crc = crc & 0x7fff;
|
||||
if (TT == 1)
|
||||
{
|
||||
crc = crc ^ 0xa001;
|
||||
}
|
||||
crc = crc & 0xffff;
|
||||
}
|
||||
}
|
||||
crc = ((crc & 0xFF) << 8 | (crc >> 8));//高低字节换位
|
||||
String CRCString = crc.ToString("X2");
|
||||
|
||||
return (CRCString);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 16进制字符串转字节数组
|
||||
/// </summary>
|
||||
/// <param name="hexString">十六进制字符串</param>
|
||||
/// <returns>返回字节数组</returns>
|
||||
public static Byte[] strToHexByte(String hexString)
|
||||
{
|
||||
hexString = hexString.Replace(" ", "");
|
||||
if ((hexString.Length % 2) != 0)
|
||||
hexString = hexString.Insert(hexString.Length - 1, 0.ToString());
|
||||
Byte[] returnBytes = new Byte[hexString.Length / 2];
|
||||
for (Int32 i = 0; i < returnBytes.Length; i++)
|
||||
returnBytes[i] = Convert.ToByte(hexString.Substring(i * 2, 2), 16);
|
||||
return returnBytes;
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
#endregion
|
||||
}
|
|
@ -0,0 +1,710 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
using System.Resources;
|
||||
using System.Text;
|
||||
using System.Text.RegularExpressions;
|
||||
using System.Threading.Tasks;
|
||||
using ToolKitlib;
|
||||
using CRClib;
|
||||
using System.Threading;
|
||||
using System.ComponentModel.Design;
|
||||
using System.Net.Sockets;
|
||||
using System.Net;
|
||||
using System.Collections;
|
||||
|
||||
internal class MagnetServer
|
||||
{
|
||||
|
||||
static log4net.ILog log;
|
||||
|
||||
public static Socket serverSocket;
|
||||
/// <summary>
|
||||
/// 在线用户列表
|
||||
/// </summary>
|
||||
public static List<string> idOnLine = new List<string>();
|
||||
/// <summary>
|
||||
/// 存储IP及Socket--便于服务器与指定客户端通信
|
||||
/// </summary>
|
||||
public static Dictionary<string, Socket> OnLineDic = new Dictionary<string, Socket>();
|
||||
|
||||
public static Encoding encoding = Encoding.Default;
|
||||
|
||||
/// <summary>
|
||||
/// 地址码,[变量名,数据类型,可修改可读否(改-读)] ,变量个数
|
||||
/// </summary>
|
||||
public static Dictionary<int, string[]> RegisterType;//地址码00对应40001,其他地址以此类推[4区保持寄存器40001~49999](绝对地址)
|
||||
|
||||
/// <summary>
|
||||
/// 循环获取数据时间
|
||||
/// </summary>
|
||||
public static int loopTime = 10;
|
||||
|
||||
/// <summary>
|
||||
/// 添加数据寄存器信息
|
||||
/// </summary>
|
||||
public static void AddDictionary()
|
||||
{
|
||||
if (RegisterType == null)
|
||||
{
|
||||
RegisterType = new Dictionary<int, string[]>();
|
||||
RegisterType.Add(0, new string[] { "瞬时流量", "ulong", "ny", "2" });
|
||||
RegisterType.Add(2, new string[] { "供水温度", "uint", "ny", "1" });
|
||||
RegisterType.Add(3, new string[] { "回水温度", "uint", "ny", "1" });
|
||||
RegisterType.Add(4, new string[] { "采样值", "uint", "ny", "1" });
|
||||
RegisterType.Add(5, new string[] { "累计流量整数", "ulong", "ny", "2" });
|
||||
RegisterType.Add(7, new string[] { "累计流量小数", "uint", "ny", "1" });
|
||||
RegisterType.Add(8, new string[] { "正累计流量整数", "ulong", "yy", "2" });
|
||||
RegisterType.Add(10, new string[] { "正累计流量小数", "uint", "ny", "1" });
|
||||
RegisterType.Add(11, new string[] { "负累计流量整数", "ulong", "yy", "2" });
|
||||
RegisterType.Add(13, new string[] { "负累计流量小数", "uint", "ny", "1" });
|
||||
RegisterType.Add(14, new string[] { "瞬时热量", "ulong", "ny", "2" });
|
||||
RegisterType.Add(16, new string[] { "修改版本号", "uint", "yy", "1" });
|
||||
RegisterType.Add(17, new string[] { "语言", "uint", "yy", "1" });
|
||||
RegisterType.Add(18, new string[] { "表地址", "uint", "yy", "1" });
|
||||
RegisterType.Add(19, new string[] { "仪表通讯速度", "uint", "yy", "1" });
|
||||
RegisterType.Add(20, new string[] { "修改口径", "uint", "yy", "1" });
|
||||
RegisterType.Add(21, new string[] { "流量单位", "uint", "yy", "1" });
|
||||
RegisterType.Add(22, new string[] { "流量积算单位", "uint", "yy", "1" });
|
||||
RegisterType.Add(23, new string[] { "零点采样值", "uint", "yy", "1" });
|
||||
RegisterType.Add(24, new string[] { "仪表系数", "uint", "yy", "1" });
|
||||
RegisterType.Add(25, new string[] { "热量系数", "uint", "yy", "1" });
|
||||
RegisterType.Add(26, new string[] { "供水温度系数", "uint", "yy", "1" });
|
||||
RegisterType.Add(27, new string[] { "回水温度系数", "uint", "yy", "1" });
|
||||
RegisterType.Add(28, new string[] { "小信号切除点", "uint", "yy", "1" });
|
||||
RegisterType.Add(29, new string[] { "修改脉冲单位", "uint", "yy", "1" });
|
||||
RegisterType.Add(30, new string[] { "允许切除显示", "uint", "yy", "1" });
|
||||
RegisterType.Add(31, new string[] { "反向输出允许", "uint", "yy", "1" });
|
||||
RegisterType.Add(32, new string[] { "电流输出类型", "uint", "yy", "1" });
|
||||
RegisterType.Add(33, new string[] { "脉冲输出方式", "uint", "yy", "1" });
|
||||
RegisterType.Add(34, new string[] { "频率输出范围", "uint", "yy", "1" });
|
||||
RegisterType.Add(35, new string[] { "空管报警允许", "uint", "yy", "1" });
|
||||
RegisterType.Add(36, new string[] { "空管报警阈值", "uint", "yy", "1" });
|
||||
RegisterType.Add(37, new string[] { "上限报警允许", "uint", "yy", "1" });
|
||||
RegisterType.Add(38, new string[] { "上限报警数值", "uint", "yy", "1" });
|
||||
RegisterType.Add(39, new string[] { "下限报警允许", "uint", "yy", "1" });
|
||||
RegisterType.Add(40, new string[] { "下限报警数值", "uint", "yy", "1" });
|
||||
RegisterType.Add(41, new string[] { "励磁报警允许", "uint", "yy", "1" });
|
||||
RegisterType.Add(42, new string[] { "传感器系数", "uint", "yy", "1" });
|
||||
RegisterType.Add(43, new string[] { "预留", "uint", "yy", "1" });
|
||||
RegisterType.Add(44, new string[] { "空管采样值", "uint", "ny", "1" });
|
||||
RegisterType.Add(45, new string[] { "报警信息", "uint", "ny", "1" });
|
||||
RegisterType.Add(46, new string[] { "电流零点修正", "uint", "yy", "1" });
|
||||
RegisterType.Add(47, new string[] { "电流满度修正", "uint", "yy", "1" });
|
||||
RegisterType.Add(48, new string[] { "仪表量程设置", "uint", "yy", "1" });
|
||||
RegisterType.Add(49, new string[] { "测量阻尼时间", "uint", "yy", "1" });
|
||||
RegisterType.Add(50, new string[] { "流量方向选择项", "uint", "yy", "1" });
|
||||
RegisterType.Add(51, new string[] { "累计热量整数", "ulong", "yy", "2" });
|
||||
RegisterType.Add(53, new string[] { "累计热量小数", "uint", "yy", "1" });
|
||||
RegisterType.Add(54, new string[] { "累计冷量整数", "ulong", "yy", "2" });
|
||||
RegisterType.Add(56, new string[] { "累计冷量小数", "uint", "yy", "1" });
|
||||
}
|
||||
}
|
||||
|
||||
static void Main(string[] args)
|
||||
{
|
||||
//初始化日志
|
||||
log4net.Config.XmlConfigurator.Configure();
|
||||
log = log4net.LogManager.GetLogger("loginfo");
|
||||
AddDictionary();
|
||||
init();
|
||||
|
||||
//var a = 0x36213;
|
||||
//ushort b = (ushort)Convert.ToInt16(a, 16);
|
||||
//byte g = (byte)(b / 256);//0x33
|
||||
//byte d = (byte)(b % 256);//0x2A
|
||||
//Console.ReadKey();
|
||||
|
||||
while (true)
|
||||
{
|
||||
if (OnLineDic.Count == 0) continue;
|
||||
Thread.Sleep(1000 * loopTime);
|
||||
byte devAdd = 0x01;
|
||||
byte code = 0x03;
|
||||
byte[] bytes;// 发送字节
|
||||
|
||||
foreach (var v in OnLineDic.Values)
|
||||
{
|
||||
foreach (var item in RegisterType.Keys)
|
||||
{
|
||||
ushort start = (ushort)item;
|
||||
ushort length = ushort.Parse(RegisterType[item][3].ToString());
|
||||
bytes = ReadKsepRsgistecs(devAdd, code, start, length);
|
||||
log.Info("发送至" + v.RemoteEndPoint + ": " + ToolKit.byteArrayToHexString(bytes));
|
||||
Console.WriteLine(ToolKit.byteArrayToHexString(bytes));
|
||||
v.Send(bytes);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 初始化服务器
|
||||
/// </summary>
|
||||
public static void init()
|
||||
{
|
||||
//TCP
|
||||
try
|
||||
{
|
||||
//var ip = "172.17.0.9";
|
||||
//var port = 12303;
|
||||
|
||||
var ip = "172.16.1.49";
|
||||
var port = 12303;
|
||||
|
||||
//调用socket(函数创建一个用于通信的套接字。
|
||||
serverSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
|
||||
|
||||
//给已经创建的套接宁绑定一个端口号
|
||||
IPEndPoint endPoint = new IPEndPoint(IPAddress.Parse(ip), port);
|
||||
serverSocket.Bind(endPoint);
|
||||
|
||||
//调用listen(函数使套接宁成为—个监听
|
||||
serverSocket.Listen(1000);//最大连接数
|
||||
|
||||
//开启监听任务
|
||||
Task.Run(new Action(() =>
|
||||
{
|
||||
ListenConnection();
|
||||
}));
|
||||
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
Console.WriteLine("服务器初始化异常:" + e.Message);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 监听任务
|
||||
/// </summary>
|
||||
private static void ListenConnection()
|
||||
{
|
||||
while (true)
|
||||
{
|
||||
//调用accept() 函数来接受客户端的连接
|
||||
Socket clientSocket = serverSocket.Accept();//新用户连接后触发返回新的socket
|
||||
string ipPort = clientSocket.RemoteEndPoint.ToString();//连接用户的IP及端口
|
||||
addOnLine(ipPort, clientSocket, true);
|
||||
Console.WriteLine(clientSocket.RemoteEndPoint.ToString() + "上线了");
|
||||
Task.Run(() => ReceiveMsg(clientSocket));//针对单个客户端开启线程(接收)
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 接收消息--接收到进入触发
|
||||
/// </summary>
|
||||
/// <param name="clientSocket"></param>
|
||||
private static void ReceiveMsg(Socket clientSocket)
|
||||
{
|
||||
while (true)
|
||||
{
|
||||
byte[] bytes = new byte[1024];
|
||||
int length = -1;
|
||||
try
|
||||
{
|
||||
length = clientSocket.Receive(bytes);//返回字节数
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
//用户下线--更新在线列表
|
||||
addOnLine(clientSocket.RemoteEndPoint.ToString(), clientSocket, false);
|
||||
Console.WriteLine(clientSocket.RemoteEndPoint.ToString() + "下线了");
|
||||
break;//结束线程
|
||||
}
|
||||
if (length == 0)
|
||||
{
|
||||
//用户下线--更新在线列表
|
||||
addOnLine(clientSocket.RemoteEndPoint.ToString(), clientSocket, false);
|
||||
Console.WriteLine(clientSocket.RemoteEndPoint.ToString() + "下线了");
|
||||
break;//结束线程
|
||||
}
|
||||
|
||||
if (length > 0)
|
||||
{
|
||||
//string message = Encoding.Default.GetString(bytes, 0, length);
|
||||
string message = ToolKit.byteArrayToHexString(bytes, length);
|
||||
log.Info("接收到" + clientSocket.RemoteEndPoint + ": " + message);
|
||||
message = message.Replace(" ", "");
|
||||
JudgmentFunction(message);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 更新在线用户列表
|
||||
/// </summary>
|
||||
/// <param name="clientIp">用户IP端口号套接</param>
|
||||
/// <param name="clientSocket">Socket</param>
|
||||
/// <param name="isAdd">用是否增加</param>
|
||||
private static void addOnLine(string clientIp, Socket clientSocket, bool isAdd)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (isAdd)
|
||||
{
|
||||
idOnLine.Add(clientIp);
|
||||
OnLineDic.Add(clientIp, clientSocket);
|
||||
}
|
||||
else
|
||||
{
|
||||
idOnLine.Remove(clientIp);
|
||||
OnLineDic.Remove(clientIp);
|
||||
}
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
Console.WriteLine("更新在线用户异常:" + e.Message);
|
||||
}
|
||||
//Invoke(new Action(() =>
|
||||
//{
|
||||
// if (isAdd) { idOnLine.Add(clientIp); }
|
||||
// else { idOnLine.Remove(clientIp); }
|
||||
//}));
|
||||
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 判断功能类型
|
||||
/// </summary>
|
||||
/// <param name="message"></param>
|
||||
public static void JudgmentFunction(string message)
|
||||
{
|
||||
try
|
||||
{
|
||||
string order = message[2].ToString() + message[3].ToString();//命令
|
||||
StringBuilder Register = new StringBuilder("");//类型
|
||||
for (int i = 4; i < 8; i++)
|
||||
{
|
||||
Register.Append(message);
|
||||
}
|
||||
var key = int.Parse(ToolKit.hexStr2Str(Register.ToString().Trim()));
|
||||
|
||||
if (order == "03")//读取命令
|
||||
{
|
||||
if (!RegisterType.ContainsKey(key) || RegisterType[key][2][1] == 'n') return;
|
||||
readData(message, key);
|
||||
}
|
||||
else if (order == "10") //修改命令
|
||||
{
|
||||
if (!RegisterType.ContainsKey(key) || RegisterType[key][2][0] == 'n') return;
|
||||
}
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
Console.WriteLine("判断功能类型异常:" + e.Message);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 读取保存寄存器指令
|
||||
/// </summary>
|
||||
/// <param name="devAdd">地址</param>
|
||||
/// <param name="code">功能码</param>
|
||||
/// <param name="start">起始地址</param>
|
||||
/// <param name="length">变量个数</param>
|
||||
/// <returns></returns>
|
||||
public static byte[] ReadKsepRsgistecs(byte devAdd, byte code, ushort start, ushort length)
|
||||
{
|
||||
//拼接报文
|
||||
List<byte> sendCommand = new List<byte>();//地址 + 功能码 + 起始地址 + 变量个数 + 校验码
|
||||
sendCommand.Add(devAdd);//地址
|
||||
sendCommand.Add(code);//功能码
|
||||
sendCommand.Add((byte)(start / 256));//起始地址--高位
|
||||
sendCommand.Add((byte)(start % 256));//起始地址--地位
|
||||
sendCommand.Add((byte)(length / 256));//变量个数--高位
|
||||
sendCommand.Add((byte)(length % 256));//变量个数--地位
|
||||
byte[] astr = ToolKit.listToBytes(sendCommand);
|
||||
string a = CRC.CRCForModbus(ToolKit.byteArrayToHexString(astr));
|
||||
sendCommand.Add(ToolKit.stringToByteArray(a)[0]); //校验码-- 高位
|
||||
sendCommand.Add(ToolKit.stringToByteArray(a)[1]); //校验码-- 地位
|
||||
|
||||
//发送报文
|
||||
//sendCommand.ToArray();
|
||||
//Thread.Sleep(40);
|
||||
byte[] bytes = ToolKit.listToBytes(sendCommand);
|
||||
//接收报文
|
||||
|
||||
//校验报文--验证长度--验证站--验证功能码
|
||||
|
||||
|
||||
//解析报文
|
||||
|
||||
return bytes;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 读取命令
|
||||
/// </summary>
|
||||
/// <param name="message"></param>
|
||||
/// <param name="key">地址码</param>
|
||||
public static void readData(string message, int key)
|
||||
{
|
||||
try
|
||||
{
|
||||
string _readSum = message[4].ToString() + message[5].ToString();
|
||||
int readSum = int.Parse(ToolKit.hexStr2Str(_readSum));//变量总字节数
|
||||
StringBuilder builder = new StringBuilder("");
|
||||
for (int i = 6; i < 6 + readSum * 2; i++)
|
||||
{
|
||||
builder.Append(message[i]);
|
||||
}
|
||||
var num = Convert.ToInt64(builder.ToString().Trim(), 16);//获取值
|
||||
var aa = RegisterType[key][1].ToLower();
|
||||
if (aa == "ulong")
|
||||
{
|
||||
var number = (ulong)num;
|
||||
analysisUnit(RegisterType[key][0], number);
|
||||
}
|
||||
else
|
||||
{
|
||||
var number = (uint)num;
|
||||
analysisUnit(RegisterType[key][0], number);
|
||||
}
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
|
||||
Console.WriteLine("读取命令异常:" + e.Message);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// unit值类型解析
|
||||
/// </summary>
|
||||
/// <param name="name">变量名</param>
|
||||
/// <param name="number"></param>
|
||||
public static void analysisUnit(string name, uint number)
|
||||
{
|
||||
|
||||
if (name == "供水温度")
|
||||
{
|
||||
Console.WriteLine(name + ":" + number + "℃");
|
||||
}
|
||||
else if (name == "回水温度")
|
||||
{
|
||||
Console.WriteLine(name + ":" + number + "℃");
|
||||
}
|
||||
else if (name == "采样值")
|
||||
{
|
||||
Console.WriteLine(name + ":" + number);
|
||||
}
|
||||
else if (name == "累计流量小数")
|
||||
{
|
||||
Console.WriteLine(name + ":0." + number);
|
||||
}
|
||||
else if (name == "正累计流量小数")
|
||||
{
|
||||
Console.WriteLine(name + ":0." + number);
|
||||
}
|
||||
else if (name == "负累计流量小数")
|
||||
{
|
||||
Console.WriteLine(name + ":0." + number);
|
||||
}
|
||||
else if (name == "修改版本号")
|
||||
{
|
||||
Console.WriteLine(name + ":" + number);
|
||||
}
|
||||
else if (name == "语言")
|
||||
{
|
||||
if (number == 0) Console.WriteLine(name + ":中文");
|
||||
else if (number == 1) Console.WriteLine(name + ":英文");
|
||||
}
|
||||
else if (name == "表地址")
|
||||
{
|
||||
Console.WriteLine(name + ":" + number);
|
||||
}
|
||||
else if (name == "仪表通讯速度")
|
||||
{
|
||||
float TRAS;//3.5字符周期周期时间(单位ms)
|
||||
if (number == 0) { Console.WriteLine(name + ":300"); TRAS = 1000 / 300 * 12.5f; }
|
||||
else if (number == 1) { Console.WriteLine(name + ":2400"); TRAS = 1000 / 2400 * 12.5f; }
|
||||
else if (number == 2) { Console.WriteLine(name + ":14400"); TRAS = 1000 / 14400 * 12.5f; }
|
||||
else if (number == 3) { Console.WriteLine(name + ":600"); TRAS = 1000 / 600 * 12.5f; }
|
||||
else if (number == 4) { Console.WriteLine(name + ":4800"); TRAS = 1000 / 4800 * 12.5f; }
|
||||
else if (number == 5) { Console.WriteLine(name + ":19200"); TRAS = 1000 / 19200 * 12.5f; }
|
||||
else if (number == 6) { Console.WriteLine(name + ":1200"); TRAS = 1000 / 1200 * 12.5f; }
|
||||
else if (number == 7) { Console.WriteLine(name + ":9600"); TRAS = 1000 / 9600 * 12.5f; }
|
||||
else if (number == 8) { Console.WriteLine(name + ":38400"); TRAS = 1000 / 38400 * 12.5f; }
|
||||
|
||||
}
|
||||
else if (name == "修改口径")
|
||||
{
|
||||
Console.WriteLine(name + ":" + number);
|
||||
}
|
||||
else if (name == "流量单位")
|
||||
{
|
||||
if (number == 0) Console.WriteLine(name + ":L/H");
|
||||
else if (number == 1) Console.WriteLine(name + ":L/M");
|
||||
else if (number == 2) Console.WriteLine(name + ":L/S");
|
||||
else if (number == 3) Console.WriteLine(name + ":M³/H");
|
||||
else if (number == 4) Console.WriteLine(name + ":M³/M");
|
||||
else if (number == 5) Console.WriteLine(name + ":M³/S");
|
||||
}
|
||||
else if (name == "流量积算单位")
|
||||
{
|
||||
if (number == 0) Console.WriteLine(name + ":0.001L");
|
||||
else if (number == 1) Console.WriteLine(name + ":0.001M³");
|
||||
else if (number == 2) Console.WriteLine(name + ":0.01L");
|
||||
else if (number == 3) Console.WriteLine(name + ":0.1L");
|
||||
else if (number == 4) Console.WriteLine(name + ":1L");
|
||||
else if (number == 5) Console.WriteLine(name + ":0.01M³");
|
||||
else if (number == 6) Console.WriteLine(name + ":0.1M³");
|
||||
else if (number == 7) Console.WriteLine(name + ":1M³");
|
||||
}
|
||||
else if (name == "零点采样值")
|
||||
{
|
||||
Console.WriteLine(name + ":" + number);
|
||||
}
|
||||
else if (name == "仪表系数")
|
||||
{
|
||||
Console.WriteLine(name + ":" + number);
|
||||
}
|
||||
else if (name == "热量系数")
|
||||
{
|
||||
Console.WriteLine(name + ":" + number);
|
||||
}
|
||||
else if (name == "供水温度系数")
|
||||
{
|
||||
Console.WriteLine(name + ":" + number);
|
||||
}
|
||||
else if (name == "回水温度系数")
|
||||
{
|
||||
Console.WriteLine(name + ":" + number);
|
||||
}
|
||||
else if (name == "小信号切除点")
|
||||
{
|
||||
Console.WriteLine(name + ":" + number);
|
||||
}
|
||||
else if (name == "修改脉冲单位")
|
||||
{
|
||||
Console.WriteLine(name + ":" + number);
|
||||
}
|
||||
else if (name == "允许切除显示")
|
||||
{
|
||||
if (number == 0) Console.WriteLine(name + ":允许");
|
||||
else if (number == 1) Console.WriteLine(name + ":禁止");
|
||||
}
|
||||
else if (name == "反向输出允许")
|
||||
{
|
||||
if (number == 0) Console.WriteLine(name + ":允许");
|
||||
else if (number == 1) Console.WriteLine(name + ":禁止");
|
||||
}
|
||||
else if (name == "电流输出类型")
|
||||
{
|
||||
if (number == 0) Console.WriteLine(name + ":0~10mA");
|
||||
else if (number == 1) Console.WriteLine(name + ":4~20mA");
|
||||
}
|
||||
else if (name == "脉冲输出方式")
|
||||
{
|
||||
if (number == 0) Console.WriteLine(name + ":频率");
|
||||
else if (number == 1) Console.WriteLine(name + ":脉冲");
|
||||
}
|
||||
else if (name == "频率输出范围")
|
||||
{
|
||||
Console.WriteLine(name + ":" + number);
|
||||
}
|
||||
else if (name == "空管报警允许")
|
||||
{
|
||||
if (number == 0) Console.WriteLine(name + ":允许");
|
||||
else if (number == 1) Console.WriteLine(name + ":禁止");
|
||||
}
|
||||
else if (name == "空管报警阈值")
|
||||
{
|
||||
Console.WriteLine(name + ":" + number);
|
||||
}
|
||||
else if (name == "上限报警允许")
|
||||
{
|
||||
if (number == 0) Console.WriteLine(name + ":允许");
|
||||
else if (number == 1) Console.WriteLine(name + ":禁止");
|
||||
}
|
||||
else if (name == "上限报警数值")
|
||||
{
|
||||
Console.WriteLine(name + ":" + number);
|
||||
}
|
||||
else if (name == "下限报警允许")
|
||||
{
|
||||
if (number == 0) Console.WriteLine(name + ":允许");
|
||||
else if (number == 1) Console.WriteLine(name + ":禁止");
|
||||
}
|
||||
else if (name == "下限报警数值")
|
||||
{
|
||||
Console.WriteLine(name + ":" + number);
|
||||
}
|
||||
else if (name == "励磁报警允许")
|
||||
{
|
||||
if (number == 0) Console.WriteLine(name + ":允许");
|
||||
else if (number == 1) Console.WriteLine(name + ":禁止");
|
||||
}
|
||||
else if (name == "传感器系数")
|
||||
{
|
||||
Console.WriteLine(name + ":" + number);
|
||||
}
|
||||
else if (name == "预留")
|
||||
{
|
||||
Console.WriteLine(name + ":" + number);
|
||||
}
|
||||
else if (name == "空管采样值")
|
||||
{
|
||||
Console.WriteLine(name + ":" + number);
|
||||
}
|
||||
else if (name == "报警信息")
|
||||
{
|
||||
if (number == 1) Console.WriteLine(name + ":瞬时流量单位选择错误");
|
||||
else if (number == 2) Console.WriteLine(name + ":空管");
|
||||
else if (number == 4) Console.WriteLine(name + ":下限报警");
|
||||
else if (number == 8) Console.WriteLine(name + ":上限报警");
|
||||
}
|
||||
else if (name == "电流零点修正")
|
||||
{
|
||||
Console.WriteLine(name + ":" + number);
|
||||
}
|
||||
else if (name == "电流满度修正")
|
||||
{
|
||||
Console.WriteLine(name + ":" + number);
|
||||
}
|
||||
else if (name == "仪表量程设置")
|
||||
{
|
||||
Console.WriteLine(name + ":" + number);
|
||||
}
|
||||
else if (name == "测量阻尼时间")
|
||||
{
|
||||
Console.WriteLine(name + ":" + number);
|
||||
}
|
||||
else if (name == "流量方向选择项")
|
||||
{
|
||||
Console.WriteLine(name + ":" + number);
|
||||
}
|
||||
else if (name == "累计热量小数")
|
||||
{
|
||||
Console.WriteLine(name + ":0." + number);
|
||||
}
|
||||
else if (name == "累计冷量小数")
|
||||
{
|
||||
Console.WriteLine(name + ":0." + number);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// ulong值类型解析
|
||||
/// </summary>
|
||||
/// <param name="name">变量名</param>
|
||||
/// <param name="number"></param>
|
||||
public static void analysisUnit(string name, ulong number)
|
||||
{
|
||||
if (name == "瞬时流量")
|
||||
{
|
||||
number /= 1000;//此值单位为升 / 小时,需要除以 1000 得到立方米 / 小时
|
||||
Console.WriteLine(name + ":" + number + "m³/h");
|
||||
}
|
||||
else if (name == "累计流量整数")
|
||||
{
|
||||
Console.WriteLine(name + ":" + number);
|
||||
}
|
||||
else if (name == "正累计流量整数")
|
||||
{
|
||||
Console.WriteLine(name + ":" + number);
|
||||
}
|
||||
else if (name == "负累计流量整数")
|
||||
{
|
||||
Console.WriteLine(name + ":" + number);
|
||||
}
|
||||
else if (name == "瞬时热量")//单位为 KJ/h(千焦每小时),若想得到 MJ/h 则需要除以 1000;换算成 KWh/h 需要除以 3600,
|
||||
{
|
||||
Console.WriteLine(name + ":" + number + "KJ/h");
|
||||
}
|
||||
else if (name == "累计热量整数")
|
||||
{
|
||||
Console.WriteLine(name + ":" + number);
|
||||
}
|
||||
else if (name == "累计冷量整数")
|
||||
{
|
||||
Console.WriteLine(name + ":" + number);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 寄存器类型
|
||||
/// </summary>
|
||||
public enum qRegisterType
|
||||
{
|
||||
//不可修改可读
|
||||
瞬时流量,
|
||||
供水温度 = 2,
|
||||
回水温度,
|
||||
采样值,
|
||||
累计流量整数,
|
||||
累计流量小数 = 7,
|
||||
|
||||
//可修改可读
|
||||
正累计流量整数,
|
||||
|
||||
//不可修改可读
|
||||
正累计流量小数 = 10,
|
||||
|
||||
//可修改可读
|
||||
负累计流量整数,
|
||||
|
||||
//不可修改可读
|
||||
负累计流量小数 = 13,
|
||||
瞬时热量,
|
||||
|
||||
//可修改可读
|
||||
修改版本号 = 16,
|
||||
语言,
|
||||
表地址,
|
||||
仪表通讯速度,
|
||||
修改口径,
|
||||
流量单位,
|
||||
流量积算单位,
|
||||
零点采样值,
|
||||
仪表系数,
|
||||
热量系数,
|
||||
供水温度系数,
|
||||
回水温度系数,
|
||||
小信号切除点,
|
||||
修改脉冲单位,
|
||||
允许切除显示,
|
||||
反向输出允许,
|
||||
电流输出类型,
|
||||
脉冲输出方式,
|
||||
频率输出范围,
|
||||
空管报警允许,
|
||||
空管报警阈值,
|
||||
上限报警允许,
|
||||
上限报警数值,
|
||||
下限报警允许,
|
||||
下限报警数值,
|
||||
励磁报警允许,
|
||||
传感器系数,
|
||||
预留,
|
||||
|
||||
//不可修改可读
|
||||
空管采样值,
|
||||
报警信息,
|
||||
|
||||
//可修改可读
|
||||
电流零点修正,
|
||||
电流满度修正,
|
||||
仪表量程设置,
|
||||
测量阻尼时间,
|
||||
流量方向选择项,
|
||||
累计热量整数,
|
||||
累计热量小数 = 53,
|
||||
累计冷量整数,
|
||||
累计冷量小数 = 56,
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,69 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<ProjectGuid>{3E0C57DE-5718-4030-A5CD-2EBA107FB7B6}</ProjectGuid>
|
||||
<OutputType>Exe</OutputType>
|
||||
<RootNamespace>ceshi</RootNamespace>
|
||||
<AssemblyName>ceshi</AssemblyName>
|
||||
<TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
|
||||
<FileAlignment>512</FileAlignment>
|
||||
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
|
||||
<Deterministic>true</Deterministic>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
<OutputPath>bin\Debug\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>bin\Release\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<TargetZone>LocalIntranet</TargetZone>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<GenerateManifests>false</GenerateManifests>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<ApplicationManifest>Properties\app.manifest</ApplicationManifest>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="log4net, Version=2.0.8.0, Culture=neutral, PublicKeyToken=669e0ddf0bb1aa2a, processorArchitecture=MSIL">
|
||||
<HintPath>packages\log4net.2.0.8\lib\net45-full\log4net.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Core" />
|
||||
<Reference Include="System.Xml.Linq" />
|
||||
<Reference Include="System.Data.DataSetExtensions" />
|
||||
<Reference Include="Microsoft.CSharp" />
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.Net.Http" />
|
||||
<Reference Include="System.Xml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="CRC.cs" />
|
||||
<Compile Include="Dianci.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<Compile Include="ToolKit.cs" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="App.config" />
|
||||
<None Include="packages.config" />
|
||||
<None Include="Properties\app.manifest" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
</Project>
|
|
@ -0,0 +1,25 @@
|
|||
|
||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
# Visual Studio Version 17
|
||||
VisualStudioVersion = 17.4.33213.308
|
||||
MinimumVisualStudioVersion = 10.0.40219.1
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Dianci", "Dianci.csproj", "{3E0C57DE-5718-4030-A5CD-2EBA107FB7B6}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
Release|Any CPU = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{3E0C57DE-5718-4030-A5CD-2EBA107FB7B6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{3E0C57DE-5718-4030-A5CD-2EBA107FB7B6}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{3E0C57DE-5718-4030-A5CD-2EBA107FB7B6}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{3E0C57DE-5718-4030-A5CD-2EBA107FB7B6}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||
SolutionGuid = {DD8A19F4-BBBF-422D-BB76-7F0953F3DB46}
|
||||
EndGlobalSection
|
||||
EndGlobal
|
|
@ -0,0 +1,36 @@
|
|||
using System.Reflection;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
// 有关程序集的一般信息由以下
|
||||
// 控制。更改这些特性值可修改
|
||||
// 与程序集关联的信息。
|
||||
[assembly: AssemblyTitle("ceshi")]
|
||||
[assembly: AssemblyDescription("")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("")]
|
||||
[assembly: AssemblyProduct("ceshi")]
|
||||
[assembly: AssemblyCopyright("Copyright © 2023")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
|
||||
// 将 ComVisible 设置为 false 会使此程序集中的类型
|
||||
//对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型
|
||||
//请将此类型的 ComVisible 特性设置为 true。
|
||||
[assembly: ComVisible(false)]
|
||||
|
||||
// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID
|
||||
[assembly: Guid("3e0c57de-5718-4030-a5cd-2eba107fb7b6")]
|
||||
|
||||
// 程序集的版本信息由下列四个值组成:
|
||||
//
|
||||
// 主版本
|
||||
// 次版本
|
||||
// 生成号
|
||||
// 修订号
|
||||
//
|
||||
//可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值
|
||||
//通过使用 "*",如下所示:
|
||||
// [assembly: AssemblyVersion("1.0.*")]
|
||||
[assembly: AssemblyVersion("1.0.0.0")]
|
||||
[assembly: AssemblyFileVersion("1.0.0.0")]
|
|
@ -0,0 +1,74 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1">
|
||||
<assemblyIdentity version="1.0.0.0" name="MyApplication.app" />
|
||||
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
|
||||
<security>
|
||||
<requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
|
||||
<!-- UAC 清单选项
|
||||
如果想要更改 Windows 用户帐户控制级别,请使用
|
||||
以下节点之一替换 requestedExecutionLevel 节点。
|
||||
|
||||
<requestedExecutionLevel level="asInvoker" uiAccess="false" />
|
||||
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
|
||||
<requestedExecutionLevel level="highestAvailable" uiAccess="false" />
|
||||
|
||||
指定 requestedExecutionLevel 元素将禁用文件和注册表虚拟化。
|
||||
如果你的应用程序需要此虚拟化来实现向后兼容性,则移除此
|
||||
元素。
|
||||
-->
|
||||
<!--><requestedExecutionLevel level="asInvoker" uiAccess="false" />-->
|
||||
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
|
||||
</requestedPrivileges>
|
||||
<applicationRequestMinimum>
|
||||
<defaultAssemblyRequest permissionSetReference="Custom" />
|
||||
<PermissionSet class="System.Security.PermissionSet" version="1" ID="Custom" SameSite="site" Unrestricted="true" />
|
||||
</applicationRequestMinimum>
|
||||
</security>
|
||||
</trustInfo>
|
||||
<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
|
||||
<application>
|
||||
<!-- 设计此应用程序与其一起工作且已针对此应用程序进行测试的
|
||||
Windows 版本的列表。取消评论适当的元素,
|
||||
Windows 将自动选择最兼容的环境。 -->
|
||||
<!-- Windows Vista -->
|
||||
<!--<supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}" />-->
|
||||
<!-- Windows 7 -->
|
||||
<!--<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}" />-->
|
||||
<!-- Windows 8 -->
|
||||
<!--<supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}" />-->
|
||||
<!-- Windows 8.1 -->
|
||||
<!--<supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}" />-->
|
||||
<!-- Windows 10 -->
|
||||
<!--<supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}" />-->
|
||||
</application>
|
||||
</compatibility>
|
||||
<!-- 指示该应用程序可感知 DPI 且 Windows 在 DPI 较高时将不会对其进行
|
||||
自动缩放。Windows Presentation Foundation (WPF)应用程序自动感知 DPI,无需
|
||||
选择加入。选择加入此设置的 Windows 窗体应用程序(面向 .NET Framework 4.6)还应
|
||||
在其 app.config 中将 "EnableWindowsFormsHighDpiAutoResizing" 设置设置为 "true"。
|
||||
|
||||
将应用程序设为感知长路径。请参阅 https://docs.microsoft.com/windows/win32/fileio/maximum-file-path-limitation -->
|
||||
<!--
|
||||
<application xmlns="urn:schemas-microsoft-com:asm.v3">
|
||||
<windowsSettings>
|
||||
<dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true</dpiAware>
|
||||
<longPathAware xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">true</longPathAware>
|
||||
</windowsSettings>
|
||||
</application>
|
||||
-->
|
||||
<!-- 启用 Windows 公共控件和对话框的主题(Windows XP 和更高版本) -->
|
||||
<!--
|
||||
<dependency>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity
|
||||
type="win32"
|
||||
name="Microsoft.Windows.Common-Controls"
|
||||
version="6.0.0.0"
|
||||
processorArchitecture="*"
|
||||
publicKeyToken="6595b64144ccf1df"
|
||||
language="*"
|
||||
/>
|
||||
</dependentAssembly>
|
||||
</dependency>
|
||||
-->
|
||||
</assembly>
|
|
@ -0,0 +1,382 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Xml.Linq;
|
||||
|
||||
namespace ToolKitlib
|
||||
{
|
||||
#region 转换工具包【ToolKit】
|
||||
|
||||
/// <summary>
|
||||
/// 转换工具包
|
||||
/// </summary>
|
||||
internal class ToolKit
|
||||
{
|
||||
/// <summary>
|
||||
/// 16进制转字符串(十进制)**
|
||||
/// </summary>
|
||||
/// <param name="hexStr"></param>
|
||||
/// <returns></returns>
|
||||
public static string hexStr2Str(String hexStr)
|
||||
{
|
||||
String str = "0123456789ABCDEF";
|
||||
char[] hexs = hexStr.ToCharArray();
|
||||
byte[] bytes = new byte[hexStr.Length / 2];
|
||||
int n;
|
||||
|
||||
for (int i = 0; i < bytes.Length; i++)
|
||||
{
|
||||
n = str.IndexOf(hexs[2 * i]) * 16;
|
||||
n += str.IndexOf(hexs[2 * i + 1]);
|
||||
bytes[i] = (byte)(n & 0xff);
|
||||
}
|
||||
StringBuilder stringBuilder = new StringBuilder("");
|
||||
for (int i = 0; i < bytes.Length; i++)
|
||||
{
|
||||
stringBuilder.Append(bytes[i]);
|
||||
}
|
||||
return stringBuilder.ToString();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 16进制转ASCII码**
|
||||
/// </summary>
|
||||
/// <param name="hexStr">16进制字符</param>
|
||||
/// <returns></returns>
|
||||
public static StringBuilder hexToASCII(string hexStr)
|
||||
{
|
||||
String str = "0123456789ABCDEF";
|
||||
char[] hexs = hexStr.ToCharArray();
|
||||
byte[] bytes = new byte[hexStr.Length / 2];
|
||||
int n;
|
||||
|
||||
for (int i = 0; i < bytes.Length; i++)
|
||||
{
|
||||
n = str.IndexOf(hexs[2 * i]) * 16;
|
||||
n += str.IndexOf(hexs[2 * i + 1]);
|
||||
bytes[i] = (byte)(n & 0xff);
|
||||
}
|
||||
StringBuilder VersionNumber = new StringBuilder("");
|
||||
for (int i = 0; i < bytes.Length; i++)
|
||||
{
|
||||
VersionNumber.Append((char)bytes[i]);
|
||||
}
|
||||
return VersionNumber;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取高四位**
|
||||
/// </summary>
|
||||
/// <param name="data"></param>
|
||||
/// <returns></returns>
|
||||
public static int getHeight4(byte data)
|
||||
{
|
||||
int height;
|
||||
height = ((data & 0xf0) >> 4);
|
||||
return height;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取低四位**
|
||||
/// </summary>
|
||||
/// <param name="data"></param>
|
||||
/// <returns></returns>
|
||||
public static int getLow4(byte data)
|
||||
{
|
||||
int low;
|
||||
low = (data & 0x0f);
|
||||
return low;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// byte数组转string
|
||||
/// </summary>
|
||||
/// <param name="data"></param>
|
||||
/// <returns></returns>
|
||||
public static string byteArrayToString(byte[] data, Encoding encoding)
|
||||
{
|
||||
return encoding.GetString(data);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 将列表 转为byte[]
|
||||
/// </summary>
|
||||
/// <param name="matrix"></param>
|
||||
/// <returns></returns>
|
||||
public static byte[] listToBytes(List<byte> matrix)
|
||||
{
|
||||
if (matrix == null)
|
||||
{
|
||||
return new byte[0];
|
||||
}
|
||||
using (MemoryStream stream = new MemoryStream())
|
||||
{
|
||||
BinaryWriter bw = new BinaryWriter(stream);
|
||||
foreach (var item in matrix)
|
||||
{
|
||||
bw.Write(item);
|
||||
}
|
||||
return stream.ToArray();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// string转 byte数组
|
||||
/// </summary>
|
||||
/// <param name="data"></param>
|
||||
/// <param name="fromBase">传入数据进制</param>
|
||||
/// <returns></returns>
|
||||
public static byte[] stringToByteArray(string data, int fromBase)
|
||||
{
|
||||
if (data.Length < 2 || data.Length % 2 != 0) return null;
|
||||
byte[] bytes = new byte[(data.Length) / 2];
|
||||
for (int i = 0; i < data.Length; i++)
|
||||
{
|
||||
if (i != 0 && i % 2 != 0)
|
||||
{
|
||||
ushort a = (ushort)Convert.ToInt16((data[i - 1].ToString() + data[i].ToString()).ToString(), fromBase);
|
||||
|
||||
bytes[(i - 1) / 2] = (byte)(a);
|
||||
}
|
||||
}
|
||||
|
||||
return bytes;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// string转byte数组--针对校验位
|
||||
/// </summary>
|
||||
/// <param name="str"></param>
|
||||
/// <returns>[0]--高位;[1]地位--</returns>
|
||||
public static byte[] stringToByteArray(string str)
|
||||
{
|
||||
//var a = "332A";
|
||||
ushort u = (ushort)Convert.ToInt16(str, 16);//0x332A
|
||||
byte g = (byte)(u / 256);//0x33 高位
|
||||
byte d = (byte)(u % 256);//0x2A 地位
|
||||
return new byte[] { g, d };
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// byte数组转16进制字符串
|
||||
/// </summary>
|
||||
/// <param name="data"></param>
|
||||
/// <returns></returns>
|
||||
public static string byteArrayToHexString(byte[] data)
|
||||
{
|
||||
StringBuilder builder = new StringBuilder();
|
||||
for (int i = 0; i < data.Length; i++)
|
||||
{
|
||||
builder.Append(string.Format("{0:X2} ", data[i]));
|
||||
}
|
||||
return builder.ToString().Trim();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// byte数组转16进制字符串--接收
|
||||
/// </summary>
|
||||
/// <param name="data"></param>
|
||||
/// <returns></returns>
|
||||
public static string byteArrayToHexString(byte[] data, int length = 0)
|
||||
{
|
||||
int dataLength = 0;
|
||||
if (length != 0) dataLength = length;
|
||||
else dataLength = data.Length;
|
||||
|
||||
StringBuilder builder = new StringBuilder();
|
||||
for (int i = 0; i < dataLength; i++)
|
||||
{
|
||||
builder.Append(string.Format("{0:X2} ", data[i]));
|
||||
}
|
||||
return builder.ToString().Trim();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 16进制字符串转byte数组
|
||||
/// </summary>
|
||||
/// <param name="data"></param>
|
||||
/// <returns></returns>
|
||||
public static byte[] hexStringToByteArray(string data)
|
||||
{
|
||||
string[] chars = data.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
|
||||
byte[] returnBytes = new byte[chars.Length];
|
||||
//逐个字符变为16进制字节数据
|
||||
for (int i = 0; i < chars.Length; i++)
|
||||
{
|
||||
returnBytes[i] = Convert.ToByte(chars[i], 16);
|
||||
}
|
||||
return returnBytes;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// byte数组转10进制字符串
|
||||
/// </summary>
|
||||
/// <param name="data"></param>
|
||||
/// <returns></returns>
|
||||
public static string byteArrayToDecString(byte[] data)
|
||||
{
|
||||
StringBuilder builder = new StringBuilder();
|
||||
for (int i = 0; i < data.Length; i++)
|
||||
{
|
||||
builder.Append(data[i] + " ");
|
||||
}
|
||||
return builder.ToString().Trim();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 10进制字符串转byte数组
|
||||
/// </summary>
|
||||
/// <param name="data"></param>
|
||||
/// <returns></returns>
|
||||
public static byte[] decStringToByteArray(string data)
|
||||
{
|
||||
string[] chars = data.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
|
||||
byte[] returnBytes = new byte[chars.Length];
|
||||
//逐个字符变为10进制字节数据
|
||||
for (int i = 0; i < chars.Length; i++)
|
||||
{
|
||||
returnBytes[i] = Convert.ToByte(chars[i], 10);
|
||||
}
|
||||
return returnBytes;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// byte数组转八进制字符串
|
||||
/// </summary>
|
||||
/// <param name="data"></param>
|
||||
/// <returns></returns>
|
||||
public static string byteArrayToOtcString(byte[] data)
|
||||
{
|
||||
StringBuilder builder = new StringBuilder();
|
||||
for (int i = 0; i < data.Length; i++)
|
||||
{
|
||||
builder.Append(Convert.ToString(data[i], 8) + " ");
|
||||
}
|
||||
return builder.ToString().Trim();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 八进制字符串转byte数组
|
||||
/// </summary>
|
||||
/// <param name="data"></param>
|
||||
/// <returns></returns>
|
||||
public static byte[] otcStringToByteArray(string data)
|
||||
{
|
||||
string[] chars = data.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
|
||||
byte[] returnBytes = new byte[chars.Length];
|
||||
//逐个字符变为8进制字节数据
|
||||
for (int i = 0; i < chars.Length; i++)
|
||||
{
|
||||
returnBytes[i] = Convert.ToByte(chars[i], 8);
|
||||
}
|
||||
return returnBytes;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 二进制字符串转byte数组
|
||||
/// </summary>
|
||||
/// <param name="data"></param>
|
||||
/// <returns></returns>
|
||||
public static byte[] binStringToByteArray(string data)
|
||||
{
|
||||
string[] chars = data.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
|
||||
byte[] returnBytes = new byte[chars.Length];
|
||||
//逐个字符变为2进制字节数据
|
||||
for (int i = 0; i < chars.Length; i++)
|
||||
{
|
||||
returnBytes[i] = Convert.ToByte(chars[i], 2);
|
||||
}
|
||||
return returnBytes;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// byte数组转二进制字符串
|
||||
/// </summary>
|
||||
/// <param name="data"></param>
|
||||
/// <returns></returns>
|
||||
public static string byteArrayToBinString(byte[] data)
|
||||
{
|
||||
StringBuilder builder = new StringBuilder();
|
||||
for (int i = 0; i < data.Length; i++)
|
||||
{
|
||||
builder.Append(Convert.ToString(data[i], 2) + " ");
|
||||
}
|
||||
return builder.ToString().Trim();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 每8bit高低位互换
|
||||
/// </summary>
|
||||
/// <param name="j">起始</param>
|
||||
/// <param name="k">终止</param>
|
||||
/// <param name="message">需要转换的16进制数据</param>
|
||||
/// <returns>新的16进制数据</returns>
|
||||
public static string interconvert(int j, int k, string message, bool exchange = true)
|
||||
{
|
||||
StringBuilder parityBitCS = new StringBuilder("");//互换后的值
|
||||
|
||||
string[] strings = new string[4] { message[0].ToString() + message[1].ToString(), message[2].ToString() + message[3].ToString(), message[4].ToString() + message[5].ToString(), message[6].ToString() + message[7].ToString() };
|
||||
for (int i = strings.Length - 1; i >= 0; i--)
|
||||
{
|
||||
parityBitCS.Append(strings[i].ToString());
|
||||
}
|
||||
return Convert.ToInt32(parityBitCS.ToString(), 16).ToString();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// byte[]直接转Float**
|
||||
/// </summary>
|
||||
/// <param name="message"></param>
|
||||
/// <returns></returns>
|
||||
public static float byteToFloat(string message)
|
||||
{
|
||||
byte[] bFxianOrg = new byte[4];
|
||||
var a = Encoding.Default.GetBytes(message);
|
||||
StringBuilder zz = new StringBuilder("");
|
||||
StringBuilder _zz = new StringBuilder("");
|
||||
string[] s = new string[4];
|
||||
int x = 0;
|
||||
for (int i = 0; i < a.Length; i++)
|
||||
{
|
||||
if (x != 0 && i % 2 == 0)
|
||||
{
|
||||
zz.Append(int.Parse(hexStr2Str(_zz.ToString())).ToString()).Append("-");
|
||||
_zz.Clear();
|
||||
x = 0;
|
||||
}
|
||||
_zz.Append(((char)a[i]).ToString());
|
||||
if (i == a.Length - 1)
|
||||
{
|
||||
zz.Append(int.Parse(hexStr2Str(_zz.ToString())).ToString()).Append("-");
|
||||
_zz.Clear();
|
||||
}
|
||||
x++;
|
||||
}
|
||||
s = zz.ToString().Split('-');
|
||||
byte a0 = byte.Parse(s[0].ToString());
|
||||
byte a1 = byte.Parse(s[1].ToString());
|
||||
byte a2 = byte.Parse(s[2].ToString());
|
||||
byte a3 = byte.Parse(s[3].ToString());
|
||||
bFxianOrg = new byte[4] { a0, a1, a2, a3 };
|
||||
var b = BitConverter.ToSingle(bFxianOrg, 0);
|
||||
return b;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// string[]转string**
|
||||
/// </summary>
|
||||
/// <param name="vs"></param>
|
||||
/// <returns></returns>
|
||||
public static string strsTostring(string[] vs)
|
||||
{
|
||||
return String.Join("", vs);//引号中可加字符串分隔符
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
#endregion
|
||||
}
|
File diff suppressed because it is too large
Load Diff
Binary file not shown.
|
@ -0,0 +1,37 @@
|
|||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<configuration>
|
||||
<configSections>
|
||||
|
||||
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
|
||||
|
||||
</configSections>
|
||||
<log4net>
|
||||
<root>
|
||||
<level value="ALL" />
|
||||
<appender-ref ref="SysAppender" />
|
||||
</root>
|
||||
<logger name="WebLogger">
|
||||
<level value="DEBUG" />
|
||||
</logger>
|
||||
<appender name="SysAppender" type="log4net.Appender.RollingFileAppender,log4net">
|
||||
<param name="File" value="App_Data/" />
|
||||
<param name="AppendToFile" value="true" />
|
||||
<param name="RollingStyle" value="Date" />
|
||||
<param name="DatePattern" value=""Logs_"yyyyMMdd".txt"" />
|
||||
<param name="StaticLogFileName" value="false" />
|
||||
<layout type="log4net.Layout.PatternLayout,log4net">
|
||||
<param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n" />
|
||||
<param name="Header" value=" ------------------------------------------------
" />
|
||||
<param name="Footer" value=" ------------------------------------------------
" />
|
||||
</layout>
|
||||
</appender>
|
||||
<appender name="consoleApp" type="log4net.Appender.ConsoleAppender,log4net">
|
||||
<layout type="log4net.Layout.PatternLayout,log4net">
|
||||
<param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n" />
|
||||
</layout>
|
||||
</appender>
|
||||
</log4net>
|
||||
<startup>
|
||||
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" />
|
||||
</startup>
|
||||
</configuration>
|
Binary file not shown.
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1,37 @@
|
|||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<configuration>
|
||||
<configSections>
|
||||
|
||||
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
|
||||
|
||||
</configSections>
|
||||
<log4net>
|
||||
<root>
|
||||
<level value="ALL" />
|
||||
<appender-ref ref="SysAppender" />
|
||||
</root>
|
||||
<logger name="WebLogger">
|
||||
<level value="DEBUG" />
|
||||
</logger>
|
||||
<appender name="SysAppender" type="log4net.Appender.RollingFileAppender,log4net">
|
||||
<param name="File" value="App_Data/" />
|
||||
<param name="AppendToFile" value="true" />
|
||||
<param name="RollingStyle" value="Date" />
|
||||
<param name="DatePattern" value=""Logs_"yyyyMMdd".txt"" />
|
||||
<param name="StaticLogFileName" value="false" />
|
||||
<layout type="log4net.Layout.PatternLayout,log4net">
|
||||
<param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n" />
|
||||
<param name="Header" value=" ------------------------------------------------
" />
|
||||
<param name="Footer" value=" ------------------------------------------------
" />
|
||||
</layout>
|
||||
</appender>
|
||||
<appender name="consoleApp" type="log4net.Appender.ConsoleAppender,log4net">
|
||||
<layout type="log4net.Layout.PatternLayout,log4net">
|
||||
<param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n" />
|
||||
</layout>
|
||||
</appender>
|
||||
</log4net>
|
||||
<startup>
|
||||
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" />
|
||||
</startup>
|
||||
</configuration>
|
Binary file not shown.
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
|
@ -0,0 +1,4 @@
|
|||
// <autogenerated />
|
||||
using System;
|
||||
using System.Reflection;
|
||||
[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETFramework,Version=v4.7.2", FrameworkDisplayName = ".NET Framework 4.7.2")]
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1 @@
|
|||
f65eb3423fba3e60e41a46bfb0af0337b8d3322f
|
|
@ -0,0 +1,11 @@
|
|||
D:\GaoGuoZheng_U3D\C#\Dianci\bin\Debug\ceshi.exe.config
|
||||
D:\GaoGuoZheng_U3D\C#\Dianci\bin\Debug\ceshi.exe
|
||||
D:\GaoGuoZheng_U3D\C#\Dianci\bin\Debug\ceshi.pdb
|
||||
D:\GaoGuoZheng_U3D\C#\Dianci\obj\Debug\Dianci.csproj.AssemblyReference.cache
|
||||
D:\GaoGuoZheng_U3D\C#\Dianci\obj\Debug\Dianci.csproj.SuggestedBindingRedirects.cache
|
||||
D:\GaoGuoZheng_U3D\C#\Dianci\obj\Debug\Dianci.csproj.CoreCompileInputs.cache
|
||||
D:\GaoGuoZheng_U3D\C#\Dianci\obj\Debug\ceshi.exe
|
||||
D:\GaoGuoZheng_U3D\C#\Dianci\obj\Debug\ceshi.pdb
|
||||
D:\GaoGuoZheng_U3D\C#\Dianci\bin\Debug\log4net.dll
|
||||
D:\GaoGuoZheng_U3D\C#\Dianci\bin\Debug\log4net.xml
|
||||
D:\GaoGuoZheng_U3D\C#\Dianci\obj\Debug\Dianci.csproj.CopyComplete
|
Binary file not shown.
|
@ -0,0 +1 @@
|
|||
7f4b213b428f4c013f19137338418ee1f5525793
|
|
@ -0,0 +1,8 @@
|
|||
D:\GaoGuoZheng_U3D\C#\ceshi\bin\Debug\ceshi.exe.config
|
||||
D:\GaoGuoZheng_U3D\C#\ceshi\bin\Debug\ceshi.exe
|
||||
D:\GaoGuoZheng_U3D\C#\ceshi\bin\Debug\ceshi.pdb
|
||||
D:\GaoGuoZheng_U3D\C#\ceshi\obj\Debug\ceshi.csproj.AssemblyReference.cache
|
||||
D:\GaoGuoZheng_U3D\C#\ceshi\obj\Debug\ceshi.csproj.SuggestedBindingRedirects.cache
|
||||
D:\GaoGuoZheng_U3D\C#\ceshi\obj\Debug\ceshi.csproj.CoreCompileInputs.cache
|
||||
D:\GaoGuoZheng_U3D\C#\ceshi\obj\Debug\ceshi.exe
|
||||
D:\GaoGuoZheng_U3D\C#\ceshi\obj\Debug\ceshi.pdb
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1 @@
|
|||
4ff1cb43041ca63923678e96382a95f6f8597a46
|
|
@ -0,0 +1,8 @@
|
|||
D:\GaoGuoZheng_U3D\C#\qwerasd\bin\Debug\ceshi.exe.config
|
||||
D:\GaoGuoZheng_U3D\C#\qwerasd\bin\Debug\ceshi.exe
|
||||
D:\GaoGuoZheng_U3D\C#\qwerasd\bin\Debug\ceshi.pdb
|
||||
D:\GaoGuoZheng_U3D\C#\qwerasd\obj\Debug\qwer.csproj.AssemblyReference.cache
|
||||
D:\GaoGuoZheng_U3D\C#\qwerasd\obj\Debug\qwer.csproj.SuggestedBindingRedirects.cache
|
||||
D:\GaoGuoZheng_U3D\C#\qwerasd\obj\Debug\qwer.csproj.CoreCompileInputs.cache
|
||||
D:\GaoGuoZheng_U3D\C#\qwerasd\obj\Debug\ceshi.exe
|
||||
D:\GaoGuoZheng_U3D\C#\qwerasd\obj\Debug\ceshi.pdb
|
|
@ -0,0 +1,4 @@
|
|||
// <autogenerated />
|
||||
using System;
|
||||
using System.Reflection;
|
||||
[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETFramework,Version=v4.7.2", FrameworkDisplayName = ".NET Framework 4.7.2")]
|
Binary file not shown.
|
@ -0,0 +1 @@
|
|||
2c30b29a00d23c23fe7971b86deffc378110adf1
|
|
@ -0,0 +1,11 @@
|
|||
D:\GaoGuoZheng_U3D\C#\Dianci\bin\Release\ceshi.exe.config
|
||||
D:\GaoGuoZheng_U3D\C#\Dianci\bin\Release\ceshi.exe
|
||||
D:\GaoGuoZheng_U3D\C#\Dianci\bin\Release\ceshi.pdb
|
||||
D:\GaoGuoZheng_U3D\C#\Dianci\obj\Release\Dianci.csproj.AssemblyReference.cache
|
||||
D:\GaoGuoZheng_U3D\C#\Dianci\obj\Release\Dianci.csproj.SuggestedBindingRedirects.cache
|
||||
D:\GaoGuoZheng_U3D\C#\Dianci\obj\Release\Dianci.csproj.CoreCompileInputs.cache
|
||||
D:\GaoGuoZheng_U3D\C#\Dianci\obj\Release\ceshi.exe
|
||||
D:\GaoGuoZheng_U3D\C#\Dianci\obj\Release\ceshi.pdb
|
||||
D:\GaoGuoZheng_U3D\C#\Dianci\bin\Release\log4net.dll
|
||||
D:\GaoGuoZheng_U3D\C#\Dianci\bin\Release\log4net.xml
|
||||
D:\GaoGuoZheng_U3D\C#\Dianci\obj\Release\Dianci.csproj.CopyComplete
|
Binary file not shown.
|
@ -0,0 +1 @@
|
|||
6059d4e65ee015d416e91b2605eaf86bfd91c969
|
|
@ -0,0 +1,8 @@
|
|||
D:\GaoGuoZheng_U3D\C#\ceshi\bin\Release\ceshi.exe.config
|
||||
D:\GaoGuoZheng_U3D\C#\ceshi\bin\Release\ceshi.exe
|
||||
D:\GaoGuoZheng_U3D\C#\ceshi\bin\Release\ceshi.pdb
|
||||
D:\GaoGuoZheng_U3D\C#\ceshi\obj\Release\ceshi.csproj.AssemblyReference.cache
|
||||
D:\GaoGuoZheng_U3D\C#\ceshi\obj\Release\ceshi.csproj.SuggestedBindingRedirects.cache
|
||||
D:\GaoGuoZheng_U3D\C#\ceshi\obj\Release\ceshi.csproj.CoreCompileInputs.cache
|
||||
D:\GaoGuoZheng_U3D\C#\ceshi\obj\Release\ceshi.exe
|
||||
D:\GaoGuoZheng_U3D\C#\ceshi\obj\Release\ceshi.pdb
|
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1,4 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<packages>
|
||||
<package id="log4net" version="2.0.8" targetFramework="net472" />
|
||||
</packages>
|
Binary file not shown.
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
Binary file not shown.
Loading…
Reference in New Issue