您的位置:首页 > 编程语言 > C#

5.C# 串口类处理上传传感器数据

2015-11-07 10:33 411 查看
我采用了C#serial Port类来处理上传传感器数据。

界面截图:



核心代码有以下3个:

1.获取串口数据代码

//串口数据获取函数
private void serialPortData()
{
//获取串口数据
int n = port.BytesToRead;
byte[] buf = new byte
;
if (port.Read(buf, 0, n) != 0)
{
readstr = Encoding.UTF8.GetString(buf);
this.textBox1.AppendText(readstr);
}
}


2.串口数据处理代码

//调用串口打开函数
serialPortOpen();
//获取串口数据
serialPortData();
//处理串口数据并上传
string s = readstr.Trim();
string[] re = s.Split(',');

string[] st;    //状态
string[] hu;    //湿度
string[] te;    //温度
string[] sm;    //烟雾浓度

string sta;
string hum;
string tem;
string smo;
for (int i = 0; i < 1; i++)
{
if (re[i].ToString().Contains("Read"))
{
st = re[i].ToString().Split(':');
hu = re[i + 1].ToString().Split(':');
te = re[i + 2].ToString().Split(':');
sm = re[i + 3].ToString().Split(':');
sta = st[1];
hum = hu[1];
tem = te[1];
smo = sm[1];
upload(sta, hum, tem, smo);
}
}


根据自己的实际情况来处理数据。如果传过来的是字符串,建议使用split()方法。

3.上传到sql server数据库代码

//上传串口数据函数
private void upload(string st, string hu, string te, string sm)
{
//linq上传数据到数据库
//DataConectDataContext ddc = new DataConectDataContext();
//Data data = new Data { State = st, Humidity = hu, Temperature = te, Smokescope = sm, UploadTime = DateTime.Now };
//ddc.Data.InsertOnSubmit(data);
//ddc.SubmitChanges();

//Sql连接到数据库
string strcon = @"Data Source=HUBERT\SQLEXPRESS;
Initial Catalog=SerialPortData;Persist Security Info=True;
User ID=zzw;Password=123456";              //连接字符串
SqlConnection con = new SqlConnection(strcon);              //连接数据库
con.Open();
string strsql = "INSERT INTO [dbo].[Data] (State,Humidity,Temperature,Smokescope,UploadTime) VALUES (@st,@hu,@te,@sm,@dt)";             //SQL语句
SqlCommand cmd = new SqlCommand(strsql, con);
cmd.Parameters.AddWithValue("@st",st);
cmd.Parameters.AddWithValue("@hu",hu);
cmd.Parameters.AddWithValue("@te",te);
cmd.Parameters.AddWithValue("@sm",sm);
cmd.Parameters.AddWithValue("@dt",DateTime.Now);
cmd.ExecuteReader();
}
可以使用linq或者sql
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: