1.上位機(jī)測試程序界面
1.1效果圖
捕獲.PNG
1.2主要功能描述及支持這些功能結(jié)構(gòu)
功能描述:在上位機(jī)測試程序界面實現(xiàn)尋酸些、寫入數(shù)據(jù)宰译、讀取數(shù)據(jù)、下位機(jī)相應(yīng)數(shù)據(jù)魄懂。
關(guān)鍵代碼:
/// 程序加載時沿侈,自動獲取串口列表
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void ServiceForm_Load(object sender, EventArgs e)
{
// TODO: 在下拉列表中列出本機(jī)所有串口
string[] ArryPort = SerialPort.GetPortNames();
comboBoxCOMList.Items.Clear();
for (int i = 0; i < ArryPort.Length; i++)
{
comboBoxCOMList.Items.Add(ArryPort[i]);
}
}
/// <summary>
/// 打開或關(guān)閉串口
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void buttonOpenCOM_Click(object sender, EventArgs e)
{
// 串口已打開,此時需要關(guān)閉
if (serialPort1.IsOpen)
{
serialPort1.Close();
this.toolStripStatusLabel1.Text = "已關(guān)閉串口" + serialPort1.PortName.ToString();
buttonOpenCOM.Text = "打開";
return;
}
// 否則打開串口
else
{
serialPort1.PortName = comboBoxCOMList.Text;
// TODO: 初始化串口參數(shù)
{
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 = "關(guān)閉";
}
catch (Exception ex)
{
this.toolStripStatusLabel1.Text = "打開串口失敗市栗,原因:" + ex.Message;
return;
}
}
}
2.卡機(jī)后臺服務(wù)界面
QQ圖片20190712154338.png
2.1功能描述
可以在下位機(jī)讀取員工卡中的信息并將員工id缀拭、姓名、部門填帽、職位蛛淋、打卡時間等信息并寫入數(shù)據(jù)庫。
2.2主要代碼
/// <summary>
/// 發(fā)送數(shù)據(jù)
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void bt_Send_Click(object sender, EventArgs e)
{
try
{
// TODO: 將`待發(fā)送數(shù)據(jù)`發(fā)送出去
serialPort1.Write(tbWrite.Text);
}
catch (Exception exp)
{
MessageBox.Show(exp.ToString());
}
}
/// <summary>
/// 接收數(shù)據(jù)
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
try
{
// TODO: 接收數(shù)據(jù)篡腌,并在`接收數(shù)據(jù)`區(qū)域顯示出來
tbRead.Text = serialPort1.ReadExisting();
}
catch (Exception exp)
{
MessageBox.Show(exp.ToString());
}
}
/// <summary>
/// 清空接收區(qū)域
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void bt_Clear_Click(object sender, EventArgs e)
{
// TODO: 清空接收區(qū)域
}
/// <summary>
/// 窗口關(guān)閉時铣鹏,要關(guān)閉串口
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void ServiceForm_FormClosing(object sender, FormClosingEventArgs e)
{
// 如果關(guān)閉窗口時,串口仍然為打開狀態(tài)哀蘑,則需要關(guān)閉串口
if (serialPort1.IsOpen)
{
serialPort1.Close();
}
}