c#串口发送程序 一直显示发送不出去

xiaoniqiumm 2015-07-30 11:11:22
private void Button_Click(object sender, RoutedEventArgs e)
{
try
{
serialPort1.PortName = "COM1";
serialPort1.Open();
byte[] data = Encoding.Unicode.GetBytes(sendbox.Text);
string str = Convert.ToBase64String(data);
serialPort1.WriteLine(str);
serialPort1.Close();
MessageBox.Show("数据发送成功!", "系统提示");
}
catch (Exception ex)
{
MessageBox.Show(ex.Message.ToString(), "提示信息");
}

}
如上,点击发送按钮发送textbox中的内容,一直发送不出去
...全文
391 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaoniqiumm 2015-07-30
  • 打赏
  • 举报
回复
我下位机做了个判断,接收到的数据如果是0x01时 显示接收成功,否则显示接收失败,但是这个发送已经弹出窗口显示发送成功了,下位机就是一直没反应,用串口助手发送就有反应
by_封爱 版主 2015-07-30
  • 打赏
  • 举报
回复
你是从哪知道发送不出去的?ex.Message里面的信息包含"没法送出去吗"? 只要你电脑有这个口 都能打开 都能发送出去 只是没有反应罢了...
xiaoniqiumm 2015-07-30
  • 打赏
  • 举报
回复
引用 3 楼 Z65443344 的回复:
因为你发送的是字符串,而根本不是什么0x01 字符串会按ASCII码转成byte[]发送 ASCII码里根本没有任何可见的文字能翻译成0x01
我直接以字符串的形式发送,发送数字1,接收到的转换成ascii码应该是0x31,在下位机判断是否为0x31还是不正确,程序如下: private void Button_Click(object sender, RoutedEventArgs e) { try { serialPort1.PortName = "COM1"; serialPort1.Open(); // byte[] data = Encoding.Unicode.GetBytes(sendbox.Text); // string str = Convert.ToBase64String(data); serialPort1.Write(sendbox.Text.ToString()); serialPort1.Close(); MessageBox.Show("数据发送成功!", "系统提示"); } catch (Exception ex) { MessageBox.Show(ex.Message.ToString(), "提示信息"); } }
xiaoniqiumm 2015-07-30
  • 打赏
  • 举报
回复
我直接以字符串的形式发送,发送数字1,接收到的转换成ascii码应该是0x31,在下位机判断是否为0x31还是不正确,程序如下: private void Button_Click(object sender, RoutedEventArgs e) { try { serialPort1.PortName = "COM1"; serialPort1.Open(); // byte[] data = Encoding.Unicode.GetBytes(sendbox.Text); // string str = Convert.ToBase64String(data); serialPort1.Write(sendbox.Text.ToString()); serialPort1.Close(); MessageBox.Show("数据发送成功!", "系统提示"); } catch (Exception ex) { MessageBox.Show(ex.Message.ToString(), "提示信息"); } }
於黾 2015-07-30
  • 打赏
  • 举报
回复
byte[] data = Encoding.Unicode.GetBytes(sendbox.Text); string str = Convert.ToBase64String(data); 你用这种方式来发送数据 那么接收端也必须按字符串接收,再Base64转byte[],再Unicode转string,才能还原你textbox的内容 你接收放接收byte[],能收到0x01才怪
於黾 2015-07-30
  • 打赏
  • 举报
回复
因为你发送的是字符串,而根本不是什么0x01 字符串会按ASCII码转成byte[]发送 ASCII码里根本没有任何可见的文字能翻译成0x01

111,092

社区成员

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

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

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