读取串口数据,得到问号。请问是什么原因。困扰

pimlee 2012-02-28 10:41:03
  Thread.Sleep(100);

StringBuilder builder = new StringBuilder();
int n = serialPort1.BytesToRead;
byte[] buf = new byte[n];

serialPort1.Read(buf, 0, n);
builder.Remove(0, builder.Length);

this.Invoke((EventHandler)(delegate
{

char[] cpara = Encoding.ASCII.GetChars(buf);
string str = new String(cpara);


this.textBox1.Text = str;

}));
...全文
1577 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
luqing200862 2012-02-28
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 pimlee 的回复:]

现在输出这么一串。怎么变成数字
18 3F 3F 6A 3F 3F 60 3F 3F 6A 3F 1C 3F 0A 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F
[/Quote]

十六进制转换成ascii码值
pimlee 2012-02-28
  • 打赏
  • 举报
回复
现在输出这么一串。怎么变成数字
18 3F 3F 6A 3F 3F 60 3F 3F 6A 3F 1C 3F 0A 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F
nonocast 2012-02-28
  • 打赏
  • 举报
回复
协议是Binary的吧
哪吒 2012-02-28
  • 打赏
  • 举报
回复
this.Invoke((EventHandler)(delegate
{
foreach (byte b in buf)
{
builder.Append(b.ToString("X2") + " ");//16进制
}
this.textBox1.AppendText(builder.ToString());
pimlee 2012-02-28
  • 打赏
  • 举报
回复
多谢提点,测试中
pimlee 2012-02-28
  • 打赏
  • 举报
回复
恩。我用串口调试器调,16进制是好的。如同
bdmh 2012-02-28
  • 打赏
  • 举报
回复
你确认是ASCII编码

110,538

社区成员

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

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

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