学士学位设计(论文)
中期报告
物联网工程学院
通信工程
1101
颜 心
学号:0702110115
一、毕业论文(设计)计划进度安排
第1-2周:根据课题要求收集资料、查阅相关文献资料、确定总体方案,完
第3-6周:确定具体方案,学习和掌握数据库等相关知识,以为软件的各模
块的设计做准备;
第7-10周:进行显示和控制界面布局的设计、数据存储程序,数据通信协
议等的设计;
第11-14周:对照设计要求调试性能,利用串口调试助手和虚拟串口添加软
件;
第15-16周:完成毕业论文,准备答辩。 成开题报告,并完成相关外文文献的翻译;
二、已完成情况、存在的主要问题及拟解决措施
1.毕业设计题目:基于工控机的多路数据采集系统软件平台开发;
2.毕业设计要求:用多个RS485串口与对应的下位机相连,实现对应下位机
模块温度、湿度信息向PC机的发送,并把接收到的信息存储在数据库中以待查询。
该方案采用多个RS485串口作为PC上位机和下位机之间的通信媒介,主要
采集两个大棚内的温度和湿度信息。其中,每个大棚都有1个温度模块、4个湿度模块和1个控制模块。1)温度模块总共有8个传感器,轮次发送每个传感器的温度信息;2)每个湿度模块也有8个传感器,轮次发送每个湿度传感器的湿度信息。这些信息都有具体的帧格式,且具体的温度和湿度采用4位16进制数的格式。上位机程序,每当对应串口的缓存区出现数据,都会读取数据,然后清空缓存区,并将数据显示到对应的TextBox中,同时存放到数据库对应的表中。 本程序采用 VS2010编程环境,使用C#.NET语言设计和SQL Server 2008数据库存储数据。
1)串口通信程序模块:首先添加SerialPort控件
serialPort1.Open(); //打开对应串口
private void serialPort1_DataReceived(object sender,
System.IO.Ports.SerialDataReceivedEventArgs e) //触发串口读取缓存区数据
{
data = serialPort1.ReadExisting();
this.Invoke(new EventHandler(DisplayText_1)); //调用显示函数
}
2) 数据显示程序模块
private void DisplayText_2(object sender,EventArgs e) //显示函数
char[] data1 = data.ToCharArray(); //字符串转换成字符数组 string str1 = data.Substring(8, 2); //取子串
string str2 = data.Substring(10, 2);
string data2 = str2 + str1; //字符串连接
int temp1 = Convert.ToInt32(data2, 16);
data2 = Convert.ToString(temp1, 10); //类型转换
decimal temp2 = Convert.ToDecimal(data2) / 10;
string strAnalysisTime = DateTime.Now.ToString();
ADD(1,1,Convert.ToInt32(data.Substring(5,2)),temp2,strAnalysisTime); //调用数据库存储程序
string x = temp2.ToString();
switch (data1[7]) //具体显示
{
case '1':
textBox2_1.Text = x;
break;
case '2':
textBox2_2.Text = x;
break;
case '3':
textBox2_3.Text = x;
break;
case '4':
textBox2_4.Text = x;
break;
case '5':
textBox2_5.Text = x;
break;
case '6':
textBox2_6.Text = x;
break;
case '7':
textBox2_7.Text = x;
break;
case '8':
textBox2_8.Text = x;
break;
}
}
3) 数据库存储程序模块
string constr = "server=MrYan-PC;database=First_Db;uid=sa;pwd=*******";
private void ADD(int a, int b, decimal c,string d) //数据库添加数据函数
SqlConnection conn = new SqlConnection(constr); //建立数据库连接实例
string sql = "insert into Temperature values('"+a+" ','"+b+"','"+c+"','"+d+"') "; conn.Open(); //连接数据库 SqlCommand cmd = new SqlCommand(sql, conn);
cmd.ExecuteNonQuery(); //添加数据 conn.Close(); //关闭连接 }
学士学位设计(论文)
中期报告
物联网工程学院
通信工程
1101
颜 心
学号:0702110115
一、毕业论文(设计)计划进度安排
第1-2周:根据课题要求收集资料、查阅相关文献资料、确定总体方案,完
第3-6周:确定具体方案,学习和掌握数据库等相关知识,以为软件的各模
块的设计做准备;
第7-10周:进行显示和控制界面布局的设计、数据存储程序,数据通信协
议等的设计;
第11-14周:对照设计要求调试性能,利用串口调试助手和虚拟串口添加软
件;
第15-16周:完成毕业论文,准备答辩。 成开题报告,并完成相关外文文献的翻译;
二、已完成情况、存在的主要问题及拟解决措施
1.毕业设计题目:基于工控机的多路数据采集系统软件平台开发;
2.毕业设计要求:用多个RS485串口与对应的下位机相连,实现对应下位机
模块温度、湿度信息向PC机的发送,并把接收到的信息存储在数据库中以待查询。
该方案采用多个RS485串口作为PC上位机和下位机之间的通信媒介,主要
采集两个大棚内的温度和湿度信息。其中,每个大棚都有1个温度模块、4个湿度模块和1个控制模块。1)温度模块总共有8个传感器,轮次发送每个传感器的温度信息;2)每个湿度模块也有8个传感器,轮次发送每个湿度传感器的湿度信息。这些信息都有具体的帧格式,且具体的温度和湿度采用4位16进制数的格式。上位机程序,每当对应串口的缓存区出现数据,都会读取数据,然后清空缓存区,并将数据显示到对应的TextBox中,同时存放到数据库对应的表中。 本程序采用 VS2010编程环境,使用C#.NET语言设计和SQL Server 2008数据库存储数据。
1)串口通信程序模块:首先添加SerialPort控件
serialPort1.Open(); //打开对应串口
private void serialPort1_DataReceived(object sender,
System.IO.Ports.SerialDataReceivedEventArgs e) //触发串口读取缓存区数据
{
data = serialPort1.ReadExisting();
this.Invoke(new EventHandler(DisplayText_1)); //调用显示函数
}
2) 数据显示程序模块
private void DisplayText_2(object sender,EventArgs e) //显示函数
char[] data1 = data.ToCharArray(); //字符串转换成字符数组 string str1 = data.Substring(8, 2); //取子串
string str2 = data.Substring(10, 2);
string data2 = str2 + str1; //字符串连接
int temp1 = Convert.ToInt32(data2, 16);
data2 = Convert.ToString(temp1, 10); //类型转换
decimal temp2 = Convert.ToDecimal(data2) / 10;
string strAnalysisTime = DateTime.Now.ToString();
ADD(1,1,Convert.ToInt32(data.Substring(5,2)),temp2,strAnalysisTime); //调用数据库存储程序
string x = temp2.ToString();
switch (data1[7]) //具体显示
{
case '1':
textBox2_1.Text = x;
break;
case '2':
textBox2_2.Text = x;
break;
case '3':
textBox2_3.Text = x;
break;
case '4':
textBox2_4.Text = x;
break;
case '5':
textBox2_5.Text = x;
break;
case '6':
textBox2_6.Text = x;
break;
case '7':
textBox2_7.Text = x;
break;
case '8':
textBox2_8.Text = x;
break;
}
}
3) 数据库存储程序模块
string constr = "server=MrYan-PC;database=First_Db;uid=sa;pwd=*******";
private void ADD(int a, int b, decimal c,string d) //数据库添加数据函数
SqlConnection conn = new SqlConnection(constr); //建立数据库连接实例
string sql = "insert into Temperature values('"+a+" ','"+b+"','"+c+"','"+d+"') "; conn.Open(); //连接数据库 SqlCommand cmd = new SqlCommand(sql, conn);
cmd.ExecuteNonQuery(); //添加数据 conn.Close(); //关闭连接 }