第四章 软件系统实现
·4.1 数据部分实现
在整个系统的设计过程中,数据的接受和发送是最为重要的部分,因为数据的处理都是以这个部分为前提,因此,在进行设计时,一定要掌握C#.NET环境下,串口通信部分的实现,以及串口通信协议。下面分别介绍串口打开、关闭、数据接受与发送等部分程序的代码。
(1) 打开串口程序如下:
private void myopen() //定义myopen()函数
{
try
{
if (!this.seriPort1.IsOpen) //当串口打开时
{
this.serialPort1.Open(); //打开一个串口连接
this.tsbtn_openSerialPort.Text = “关闭串口”;
this.tsbtn_openSerialPort.Tag = 1;
this.tsbtn_autoMonitor.Enabled = true;
this.btn_Send.Enabled = true;
this.tsl_connection.Image = global::SerialPortTerminal.Properties.Resources.connect;
this.tsl_connection.ToolTipText = “串口连接已开启”;
this.tssl.Properties.Resources.connect;
this.tssl_logs.Text = “串口连接已开启”;
this.tssl_logs.ToolTipText = “串口连接已开启”;
}
}
catch (Exception ex) //捕获异常,当前串口已被占用
{
MessageBox.Show(ex.Message, "警告", MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
}
(2) 关闭串口程序如下:
private void myclose() //定义myclose()函数
{
if (this.ialPort1.Close(); //关闭一个串口连接
this.tsbtn_openSerialPort.Text =“打开串口”;
this.tsbtn_openSerialPort.Tag = 0;
this.tsbtn_autoMonitor.Tag = 0;
this.tsbtn_autoMonitor.Text = “开始监控”;
this.tsbtn_autoMonitor.Enabled = false;
this.btn_Send.Enabled = false;
this.tsl_connection.Image = global::SerialPortTerminal.Properties.Resources.disconnect;
this.tsl_connection.ToolTipText =“串口连接已关闭”;
this.tssl_logs.Image = global::SerialPortTerminal.Properties.Resources.disconnect;
this.tssl_logs.Text =“串口连接已关闭”;
this.tssl_logs.ToolTipText =“串口连接已关闭”;
}
}
private void openSerialPort_Click(object sender, EventArgs e)
{(this.openSerialPort.Tag); //定义一个串口标志变量
if (i == 0) //当串口未打开时
{
myopen(); // 执行打开串口函数
}
else
{
myclose(); //否则,执行关闭串口函数
}
}
(3) 数据接收程序:
private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
int iSum = 0; //定义一个变量
string strTemp1 = “”; //初始化变量
byte[] bTemp = new byte[4096]; //赋值接收字符串最大长度
if (serialPort1.IsOpen) //如果串口已打开
{
(1000); //控制线程
iSum =t1.BytesToRead; //赋值按字节读取
int iRel = serialPort1.Read(bTemp, 0, iSum);
serialPort1.Close(); // 关闭串口
//strTemp1 = Encoding.Unicode.GetString(bTemp, 0,iSum).ToString(); //转换字符
strTemp1 = strTemp1 + Encoding.ASCII.GetString(bTemp, 0,iSum).ToString(); //字符按ASCII编码
上一页 [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] ... 下一页 >>