class protocol:IDisposable
{
private static protocol instance;
/// <summary>
/// 实例化协议类
/// </summary>
/// <returns></returns>
public protocol()
{
}
private string _model;
/// <summary>
/// 累加和后的指令属性
/// </summary>
/// <returns></returns>
public string _Model
{
get
{
return _model;
}
set
{
_model = value;
}
}
/// <summary>
/// 输入一个参数将其进行累加和及异或校验
/// </summary>
/// <param name="ls"></param>
/// <returns></returns>
private protocol(string ls)
{
#region //生成指令代码
char[] c_ls = ls.ToCharArray();
int sum = 0;//累加和
long xor = 0;//异或
int model = 0;//取模
string ls_jy = null;//临时校验参数
ASCIIEncoding AE1 = new ASCIIEncoding();
for (int i = 0; i < c_ls.Length; i++)
{
byte[] ByteArray1 = AE1.GetBytes(c_ls[i].ToString());
//打印出ASCII码
for (int x = 0; x <= ByteArray1.Length - 1; x++)
{
sum += Convert.ToInt32(ByteArray1[x]);//累加和
}
}
model = sum % 256;//取模
xor = model ^ Convert.ToInt32("87", 16);
ls_jy = Convert.ToString(xor, 16).ToUpper();
_Model = "#"
+ ls.ToUpper()
+ (ls_jy.Length < 2 ? "0" + ls_jy : ls_jy)
+ "!";
#endregion
//model = (restring.Select(x => (int)x).Aggregate(0, (x, y) => (x + y) % 256) ^ 135).ToString("X").PadLeft(2, '0');
//_Model = ("#" + restring + model + "!"); }
/// <summary>
/// 返回一个自定义的协议类
/// </summary>
/// <param name="ls">参数值</param>
/// <returns></returns>
public static protocol Getinstance(string ls)
{
if (instance == null)
{
instance = new protocol(ls);
}
else
{
instance._Model = null;
instance = new protocol(ls);
}
return instance; } #region IDisposable 成员 public void Dispose()
{
} #endregion
}
上面这段程序
string model = protocol.Getinstance(ls_str)._Model;
spPort.Write(model);//将指令写入串口缓冲区
执行程序时,提示红色部分没有实例化对象,不知道具体是哪里出了问题,高手指点一下c#
{
private static protocol instance;
/// <summary>
/// 实例化协议类
/// </summary>
/// <returns></returns>
public protocol()
{
}
private string _model;
/// <summary>
/// 累加和后的指令属性
/// </summary>
/// <returns></returns>
public string _Model
{
get
{
return _model;
}
set
{
_model = value;
}
}
/// <summary>
/// 输入一个参数将其进行累加和及异或校验
/// </summary>
/// <param name="ls"></param>
/// <returns></returns>
private protocol(string ls)
{
#region //生成指令代码
char[] c_ls = ls.ToCharArray();
int sum = 0;//累加和
long xor = 0;//异或
int model = 0;//取模
string ls_jy = null;//临时校验参数
ASCIIEncoding AE1 = new ASCIIEncoding();
for (int i = 0; i < c_ls.Length; i++)
{
byte[] ByteArray1 = AE1.GetBytes(c_ls[i].ToString());
//打印出ASCII码
for (int x = 0; x <= ByteArray1.Length - 1; x++)
{
sum += Convert.ToInt32(ByteArray1[x]);//累加和
}
}
model = sum % 256;//取模
xor = model ^ Convert.ToInt32("87", 16);
ls_jy = Convert.ToString(xor, 16).ToUpper();
_Model = "#"
+ ls.ToUpper()
+ (ls_jy.Length < 2 ? "0" + ls_jy : ls_jy)
+ "!";
#endregion
//model = (restring.Select(x => (int)x).Aggregate(0, (x, y) => (x + y) % 256) ^ 135).ToString("X").PadLeft(2, '0');
//_Model = ("#" + restring + model + "!"); }
/// <summary>
/// 返回一个自定义的协议类
/// </summary>
/// <param name="ls">参数值</param>
/// <returns></returns>
public static protocol Getinstance(string ls)
{
if (instance == null)
{
instance = new protocol(ls);
}
else
{
instance._Model = null;
instance = new protocol(ls);
}
return instance; } #region IDisposable 成员 public void Dispose()
{
} #endregion
}
上面这段程序
string model = protocol.Getinstance(ls_str)._Model;
spPort.Write(model);//将指令写入串口缓冲区
执行程序时,提示红色部分没有实例化对象,不知道具体是哪里出了问题,高手指点一下c#
你设断点跟踪一下