欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 汽车 > 维修 > 第六节:基于Winform框架的串口助手小项目---收发数据《C#编程》

第六节:基于Winform框架的串口助手小项目---收发数据《C#编程》

2025/7/7 0:52:18 来源:https://blog.csdn.net/qq_58662017/article/details/146049887  浏览:    关键词:第六节:基于Winform框架的串口助手小项目---收发数据《C#编程》

1.目标:实现数据的收发

2.代码演示

根据控件编程

(1)接收配置

自动清空

private void autoclear_chb_CheckedChanged(object sender, EventArgs e)
{if (autoclear_chb.Checked){timer1.Start();}else{timer1.Stop();}
}

手动清空

 private void Manual_clear_btn_Click(object sender, EventArgs e){reciveBuffer.Clear();Receive_count_tssl.Text = "";Receive_rtb.Text = "";}

十六进制

private void Receive_Hex_chb_CheckedChanged(object sender, EventArgs e)
{if (Receive_rtb.Text == "") return;if (Receive_Hex_chb.Checked){Receive_rtb.Text = Transform.ToHexString(reciveBuffer.ToArray(), " ");}else{Receive_rtb.Text = Encoding.GetEncoding("gb2312").GetString(reciveBuffer.ToArray()).Replace("\0", "\\0");}
}

暂停

private void Receive_Stop_btn_Click(object sender, EventArgs e)
{if (isRxShow == true){isRxShow = false;Receive_Stop_btn.Text = "取消暂停";}else{isRxShow = true;Receive_Stop_btn.Text = "暂停";}
}

(2)发送配置

自动发送

private void autosend_chb_CheckedChanged(object sender, EventArgs e)
{// 串口未打开if(serialPort1.IsOpen==false && autosend_chb.CheckState == CheckState.Checked){autosend_chb.CheckState = CheckState.Unchecked;if(timer2!=null){timer2.Enabled = false;timer2.Stop();// timer2 = null;}MessageBox.Show("发送失败,串口未打卡");return;}// 串口打开if (serialPort1.IsOpen == true && autosend_chb.CheckState == CheckState.Checked){autotimer_txb.Enabled = false;send_btn.Enabled = false;int i = Convert.ToInt32(autotimer_txb.Text);if (i < 10 || i>60*1000){i = 1000;autotimer_txb.Text = "1000";MessageBox.Show("自动发送数据的周期范围是10-60000毫秒", "警告");}timer2.Interval = i;timer2.Start();}else{send_btn.Enabled = true;autotimer_txb.Enabled = true;if(timer2!=null){timer2.Stop();//timer2 = null;}}}

手动发送

private void Manual_Send_btn_Click(object sender, EventArgs e)
{// 如果发送的数据不为空,则接收if (this.Send_rtb.Text != "" && serialPort1.IsOpen){Console.WriteLine(Transform.ToHexString(sendBuffer.ToArray()));sendData();}else{MessageBox.Show("请先输入发送数据!");}}

十六进制

 private void Send_Hex_chb_CheckedChanged(object sender, EventArgs e){if(Send_rtb.Text == "") return;if (Send_Hex_chb.Checked == true){Send_rtb.Text = Transform.ToHexString(sendBuffer.ToArray(), " ");}else{Send_rtb.Text = Encoding.GetEncoding("gb2312").GetString(sendBuffer.ToArray()).Replace("\0", "\\0");}}

清空发送

 private void Send_clear_btn_Click(object sender, EventArgs e){sendBuffer.Clear();Send_rtb.Text = "";sendCount = 0;Receive_count_tssl.Text = "0";}

3.效果展示

代码看不懂,去Deepseek

待续》》》

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词