以下是我看其他人写的一段发送数据的程序:
private void button2_Click(object sender, EventArgs e)
{
string str = "";
str = textBox2.Text;
if (checkBox6_flag)
{
str += "\r\n";
}
string a = "", b = "-";
a = textBox2.Text;
// List l = Encoding.ASCII.GetBytes(a).ToList();
// byte[] data = l.ToArray();
// a = (BitConverter.ToString(data));
// for (int i = 0; i < a.Length; i++)
//{
// if (a[i] == b[0]) { a = a.Remove(i, 1); a = a.Insert(i, " "); }
// }
if (button1_flag == true)
if (checkBox5_flag == true)
{
ser_mcs.Write(a);
//a = a.Replace(" ","");
TX += a.Length;
label10.Text = Convert.ToString(TX);
}
else
{
ser_mcs.Write(str);
TX += str.Length;
label10.Text = Convert.ToString(TX);
}
else MessageBox.Show("尚未打开串口!");
}
这段程序中我注释掉的部分不是太理解,哪位大神能给我讲解以下
先将字符串转换成字节数组,然后将字节数组通过BitConverter.ToString()转换成带-的16进制字符串表示形式。比如 byte[ ] arrayOne = {
0, 1, 2, 4, 8, 16, 32, 64, 128, 255 };转换后会变成“00-01-02-04-08-10-20-40-80-FF“的形式。至于替换-为" ",可能是发送的时候只发送进制数据和空格,不想要其它多余的字符。
从代码上看,是先把字符串转换成字节数组,再把“-”替换成“ ”,我觉得先替换后转换也行吧。
// List l = Encoding.ASCII.GetBytes(a).ToList(); 将字符串a转换为字节数组,再转换为list
// byte[] data = l.ToArray(); //再转换数组,其实tolist,toarray都是多余,直接data = Encoding.ASCII.GetBytes(a)就好了。
// a = (BitConverter.ToString(data)); //将data再转换回字符串,既然如此,上面三行都是多余。
// for (int i = 0; i < a.Length; i++)
//{
// if (a[i] == b[0]) { a = a.Remove(i, 1); a = a.Insert(i, " "); } 不知道b[0]是什么,这里其实只是一个替换,整个循环相当于a = a.Replace(b[0]," ");
// }
总之,注释的代码没有任何意义,要么是作者在调试,检查a是否是ascii编码,要么就是作者写错了,才注释的。