采用C#开发上位机非常方便,具体步骤如下:
1.绘制一个上位机的界面,如下图所示:
不要忘记还有下面的串口模块serialPort1
2.初始化部分:
波特率编辑框中加入需要的波特率
实现COM口选择栏里显示可以选择的串口
下面展示一些 内联代码片
。
private void Form1_Load(object sender, EventArgs e)
{
for (int i = 1; i < 20; i++)
{
serialPort1.PortName = "COM" + i.ToString();
serialPort1.BaudRate = 9600;
try
{
serialPort1.Open();
ComBox.Items.Add("COM" + i.ToString());
serialPort1.Close();
}
catch
{
}
}
BaudBox.Text = "9600";
}
3.串口打开:
下面展示一些 内联代码片
。
private void OpenBtn_Click(object sender, EventArgs e)
{
if (OpenBtn.Text == "打开串口")
{
try
{
serialPort1.PortName = ComBox.Text;
serialPort1.BaudRate = Convert.ToInt32(BaudBox.Text);
serialPort1.Open();
SendBtn.Enabled = true;
OpenBtn.Text = "关闭串口";
}
catch
{
MessageBox.Show("端口错误", "错误");
}
}
else
{
try
{
serialPort1.Close();
SendBtn.Enabled = false;
OpenBtn.Text = "打开串口";
}
catch
{
MessageBox.Show("端口错误", "错误");
}
}
}
4.串口发送
下面展示一些 内联代码片
。
private void SendBtn_Click(object sender, EventArgs e)
{
if (SendTextBox.Text != "")
{
try
{
serialPort1.Write(SendTextBox.Text);
}
catch
{
MessageBox.Show("串口数据写入错误", "错误");
}
}
}
5.串口接收:
点击serialPort1,右边小闪电,DataReceived事件,新建数据接收事件
代码一开始一定要加入这句话,不然无法接收到数据!
CheckForIllegalCrossThreadCalls = false;
下面展示一些 内联代码片
。
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
CheckForIllegalCrossThreadCalls = false;
}
编写接收数据代码:
下面展示一些 内联代码片
。
private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{
byte[] data = new byte[serialPort1.BytesToRead];
serialPort1.Read(data, 0, data.Length);
foreach (byte Member in data)
{
string str = Convert.ToString(Member, 16).ToUpper();
RecTextBox.AppendText("0x" + (str.Length == 1 ? "0" + str : str) + " ");
}
}
至此就完成了简单的串口程序
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)