请教高手serialport十六进制显示的问题
我的PC和另一台PC进行通讯。本机始终是十六进制显示。
对方的机子先使用非十六进制发送文本:01 03 00 56 00 01 64 1A,本机显示正常:3031 3033 3030 3536 3030 3031 3634 3141;
对方的机子再使用十六进制发送同样文本,本机却显示:1305601641a,这是怎么回事?
本机的十六进制显示使用的都是同一个函数,如下:
//首先是控件serialport的方法:
private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{
try
{
byte[] buffer = new byte[this.serialPort1.BytesToRead];
//if (this.serialPort1.BytesToRead >= 0)
//{
this.serialPort1.Read(buffer, 0, buffer.Length);
if (this.checkBox2.Checked)//按十六进制显示
{
string txt = chshex.hextostr(buffer);//调用chshex函数,具体见下面
print(txt);
receive = txt.Length+ receive;
this.toolStripStatusLabel4.Text = receive.ToString();
}
if (!this.checkBox2.Checked)//不按十六进制显示
{
string txt = ConvertByteArrayToString(buffer);
print(txt);
receive = txt.Length * 2 + receive;
this.toolStripStatusLabel4.Text = receive.ToString();
}
//}
}
catch (Exception exp)
{
MessageBox.Show(exp.ToString());
}
}
//chshex的hextostr函数:
public static string hextostr(byte[] date)
{
string a = "";
for (int i = 0; i < date.Length; i++)
{
a = a+Convert.ToString(date[i],16);
}
return a;
}
这个函数调用我觉得是有问题的。只有在对方为非十六进制发送时才显示正确。而对方以十六进制发送则显示错误。
大家给帮帮忙看看问题在哪儿?