从串口接收16进制然后转换成10进制,怎么数据减少了?

dzone12345 2018-05-03 10:00:50
从串口接收16进制然后转换成10进制,显示在textbox里,怎么接收到的16进制数有一万多个,而显示的十进制数才十几个呢
private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
int n = serialPort1.BytesToRead;
byte[] buf = new byte[n];
received_count += n;
serialPort1.Read(buf, 0, n);
builder.Clear();

this.Invoke((EventHandler)(delegate
{
foreach (byte b in buf)
{
builder.Append(b.ToString("X2") + " ");
}
this.textBox3.AppendText(builder.ToString());
string[] maxvalue = textBox3.Text.Split(new string[1] { "A " }, System.StringSplitOptions.None);//子字符串分割字符串
for (int i = 0; i < maxvalue.Length; i++ )
{
textBox1.AppendText(maxvalue[i] );
}

if (textBox1.Text.Length > 21)
{
aa = textBox1.Text.Substring(9, 11).Replace(" ", "");//截取收到内容的数据部分
bb = Convert.ToInt32(aa, 16);//转换16进制为10进制
if (0 <bb && bb < 10000)
{
textBox4.AppendText(bb.ToString() + "\r\n");
//textBox1.Text += dd + "\r\n";//文本框显示10进制数据
series.Points.AddXY(0,bb);
}

}
textBox3.Clear();
textBox1.Clear();
}));

从串口接收16进制然后转换成10进制,显示在textbox里,怎么接收到的16进制数有一万多个,而显示的十进制数才十几个呢[
...全文
1082 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
dzone12345 2018-05-09
  • 打赏
  • 举报
回复
有什么办法吗
qu121069694 2018-05-08
  • 打赏
  • 举报
回复
试试看bitconvert
dzone12345 2018-05-08
  • 打赏
  • 举报
回复
请大神指点我一下
dzone12345 2018-05-07
  • 打赏
  • 举报
回复
我这个应该如何实现呢?
  • 打赏
  • 举报
回复
在编程中,也不应该允许把控件滥用成什么存储变量。textbox3只应该用来显示图形化(文字)信息,而不是用来当作内存变量来滥用的。你的代码把 textbox3 当作暂存变量来用,这应该是被禁止的!!
  • 打赏
  • 举报
回复
你怎么知道取到 n 个字节就已经取到一个消息的结尾了呢?没有确保取到结尾,你怎么能当成完整的消息去处理、然后丢掉呢? 另外,在 I/O 过程中不要去随便阻塞线程,要使用 BeginInvoke,不要乱用 Invoke。
dzone12345 2018-05-04
  • 打赏
  • 举报
回复
textbox1.text的内容也是不断变化的啊
xuzuning 2018-05-03
  • 打赏
  • 举报
回复
怎么会有十几个呢?应该只有一个 无论 textBox1.Text 中有多少内容 aa = textBox1.Text.Substring(9, 11).Replace(" ", ""); 你只取了11个字符,折合成 一个 Int32

110,537

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧