九寨沟城乡建设官方网站,网站建设2000元,ic外贸平台排行,昆明做网站的想要了解更多内容#xff0c;关注微信公众号#xff1a;实在太懒于是不想取名 作为一个有着伟大理想#xff0c;崇高信念21社会主义青年#xff0c;在我平时用着串口助手、计算器的时候。我总是寻思着#xff0c;我能不能自己去实现做一个软件#xff0c;能实现我日常想要…想要了解更多内容关注微信公众号实在太懒于是不想取名 作为一个有着伟大理想崇高信念21社会主义青年在我平时用着串口助手、计算器的时候。我总是寻思着我能不能自己去实现做一个软件能实现我日常想要做的功能例如串口助手啦图片助手啦文件转换啦等等。 于是打算从0.5开始手搓一个大杂烩软件。 首先的工具我就想到了串口助手那么本期我们就介绍如何使用C#制作串口助手。
相关库安装 首先我们需要在NuGet包管理中找到我们的关于端口的包 我们搜索这个包并且安装这个包这样子我们就可以在C#中调用我们的端口类了。
页面布局 通常我们的串口助手最基本的数据接收和发送打开和关闭串口以及选择端口设置波特率等等所以我们需要若干个TextBox文本框Label标签以及Button按钮来实现我们的基本功能最后还需要有一个下拉式的ComboBox来选择我们的串口
我们在左边的空间库中寻找我们需要的控件放置到我们的设计器中。
基础编写
private void LoadAvailablePorts()
{
// 获取可用端口
string[] ports SerialPort.GetPortNames();
// 将端口添加到ComboBox中
COMChoose.Items.AddRange(ports);
// 如果需要默认选择第一个端口
if (COMChoose.Items.Count 0)
{
COMChoose.SelectedIndex 0;
} 我们首先编写获取端口的代码并且在FromLoad函数中调用这个代码这样子我们就可以加载端口显示在下拉框中
CheckBit.SelectedIndex 0;
我们在这些选项框中使用默认第一个数据。
private void Connect_Click(object sender, EventArgs e)
{
if (serialPort.IsOpen)
{
// 串口已经打开关闭串口
serialPort.Close();Connect.Text 打开串口;
// 启用控件
COMChoose.Enabled true;
PortText.Enabled true;
DataBit.Enabled true;
StopBit.Enabled true;
CheckBit.Enabled true;
}
else
{
// 串口未打开尝试打开串口
try
{
// 配置串口
serialPort.PortName COMChoose.SelectedItem.ToString();
serialPort.BaudRate int.Parse(PortText.Text); // 获取波特率
serialPort.DataBits int.Parse(DataBit.SelectedItem.ToString()); // 获取数据位
// 设置停止位
switch (StopBit.SelectedItem.ToString())
{
case 1:
serialPort.StopBits StopBits.One;
break;
case 1.5:
serialPort.StopBits StopBits.OnePointFive;
break;
case 2:
serialPort.StopBits StopBits.Two;
break;
default:
serialPort.StopBits StopBits.One;break;}
// 设置校验位
switch (CheckBit.SelectedItem.ToString())
{case None:
serialPort.Parity Parity.None;break;
case Odd:
serialPort.Parity Parity.Odd;
break;
case Even:
serialPort.Parity Parity.Even;
break;
default:
serialPort.Parity Parity.None;
break;}// 打开串口
serialPort.Open();Connect.Text 关闭串口;// 禁用控件
COMChoose.Enabled false;
PortText.Enabled false;
DataBit.Enabled false;
StopBit.Enabled false;CheckBit.Enabled false;
serialPort.DataReceived DataReceivedHandler;
}
catch (Exception ex)
{// 打开串口失败显示错误消息
MessageBox.Show(串口打开失败 ex.Message);
}
} 我们在点击按钮的时候设置的代码是点击按钮改变按钮的文本并且配置按钮的各项数据禁用/开启端口选择..等等的使用以及创建新的回调函数DataReceivedHandler在这个函数中编写我们收到的代码信息。
private void DataReceivedHandler(object sender, SerialDataReceivedEventArgs e)
{
try{
// 从串口读取数据
string data serialPort.ReadExisting();
// 将数据追加到 Receive 文本框中
UpdateReceiveTextBox(data);
}
catch (Exception ex)
{
MessageBox.Show(接收失败 ex.Message);
}
private void UpdateReceiveTextBox(string data)
{
if (Receive.InvokeRequired)
{
// 如果不在 UI 线程上通过 Invoke 在 UI 线程上更新文本框
Receive.Invoke(new Actionstring(UpdateReceiveTextBox), data);
}
else
{
// 在 UI 线程上更新文本框
Receive.AppendText(data);
}
我们在串口回调函数中简单的添加一些内容我们将收到的串口打印到我们的TextBox上UpdateReceiveTextBox这个函数也是我们自己定义的作用是用来区分当前程序是不是在UI线程上如果不在UI线程上我们需要用另一种方式来更新我们的控件 接收串口数据成功我们也添加了时间戳的功能用来为我们的代码接收添加时间。
// 在 UI 线程上更新文本框if (TimeTik.Checked){// 如果 TimeTik 被勾选加上时间戳
data ${DateTime.Now:HH:mm:ss} - {data};
} 接着我们来编写发送部分的代码
private void TransBotton_Click(object sender, EventArgs e)
{
try{
// 获取要发送的文本string dataToSend TransText.Text;// 判断是否勾选了 NewLine 复选框
if (NewLine.Checked)
{
// 添加新行dataToSend Environment.NewLine; } // 发送数据
serialPort.Write(dataToSend);
}
catch (Exception ex)
{MessageBox.Show(串口发送失败);} 其实这个东西运行起来还是有不少BUG的需要我们不断的优化感兴趣的朋友可以后台私信联系。