1.上位机测试程序界面
1.1效果图
1.2主要功能描述及支持这些功能结构
功能描述:在上位机测试程序界面实现寻、写入数据、读取数据、下位机相应数据。
关键代码:
/// 程序加载时,自动获取串口列表
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void ServiceForm_Load(object sender, EventArgs e)
{
// TODO: 在下拉列表中列出本机所有串口
string[] ArryPort = SerialPort.GetPortNames();
comboBoxCOMList.Items.Clear();
for (int i = 0; i < ArryPort.Length; i++)
{
comboBoxCOMList.Items.Add(ArryPort[i]);
}
}
/// <summary>
/// 打开或关闭串口
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void buttonOpenCOM_Click(object sender, EventArgs e)
{
// 串口已打开,此时需要关闭
if (serialPort1.IsOpen)
{
serialPort1.Close();
this.toolStripStatusLabel1.Text = "已关闭串口" + serialPort1.PortName.ToString();
buttonOpenCOM.Text = "打开";
return;
}
// 否则打开串口
else
{
serialPort1.PortName = comboBoxCOMList.Text;
// TODO: 初始化串口参数
{
serialPort1.BaudRate = 115200;
serialPort1.DataBits = 8;
serialPort1.Parity = Parity.None;
serialPort1.StopBits = StopBits.One;
}
try
{
serialPort1.Open();
this.toolStripStatusLabel1.Text = "已打开串口" + serialPort1.PortName.ToString();
buttonOpenCOM.Text = "关闭";
}
catch (Exception ex)
{
this.toolStripStatusLabel1.Text = "打开串口失败,原因:" + ex.Message;
return;
}
}
}
2.卡机后台服务界面
2.1功能描述
可以在下位机读取员工卡中的信息并将员工id、姓名、部门、职位、打卡时间等信息并写入数据库。
2.2主要代码
/// <summary>
/// 发送数据
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void bt_Send_Click(object sender, EventArgs e)
{
try
{
// TODO: 将`待发送数据`发送出去
serialPort1.Write(tbWrite.Text);
}
catch (Exception exp)
{
MessageBox.Show(exp.ToString());
}
}
/// <summary>
/// 接收数据
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
try
{
// TODO: 接收数据,并在`接收数据`区域显示出来
tbRead.Text = serialPort1.ReadExisting();
}
catch (Exception exp)
{
MessageBox.Show(exp.ToString());
}
}
/// <summary>
/// 清空接收区域
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void bt_Clear_Click(object sender, EventArgs e)
{
// TODO: 清空接收区域
}
/// <summary>
/// 窗口关闭时,要关闭串口
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void ServiceForm_FormClosing(object sender, FormClosingEventArgs e)
{
// 如果关闭窗口时,串口仍然为打开状态,则需要关闭串口
if (serialPort1.IsOpen)
{
serialPort1.Close();
}
}