问题:
对于winform的textbox (vs2012 .net4.5)
无法显示全字符串ch=“123\0456\0789\0”;的变量
只能显示出第一个\0前面的字符串“123”
@符号不方便使用的情况
方法:
转换为字符数组把\0用空格替换掉。
参考代码:
text = System.Text.Encoding.Default.GetString(buf);//转码
char[] ch1= text.ToArray();
text = string.Empty;
this.BeginInvoke(new Action(() =>
{
if (myReceivedDataType != ReceivedDataType.HexType)//接收模式为ASCII文本模式
{
char x;
foreach (char ch in ch1)
{
if (ch == '\0') { x = ' '; }
else {x = ch;}
text += x.ToString();
}
acceptRichTextBox.Text += text;//加显到接收区
}
else
{
foreach (byte b in buf)
{
builder.Append(b.ToString("X2") + " ");
}
text = builder.ToString();
acceptRichTextBox.Text += text;
}
}), null);
//======================
Thread.Sleep(50);
int size = mySerialPort.BytesToRead;
byte[] buf = new byte[size];
string text="";
totalReceivedBytes += size;
mySerialPort.Read(buf, 0, buf.Length);
char[] ch1 = System.Text.Encoding.Default.GetChars(buf);//转码
text = string.Empty;
this.BeginInvoke(new Action(() =>
{
if (myReceivedDataType != ReceivedDataType.HexType)//接收模式为ASCII文本模式
{
char x;
foreach (char ch in ch1)
{
if (ch == '\0') { x = ' '; }
else { x = ch; }
text += x.ToString();
}
acceptRichTextBox.Text += text+" ";//加显到接收区
}