通过C#编程怎么实现来自计算机串口的数据在数据库SQL里的实时更新??? 求代码、严重求指导!!!

2025-02-23 10:40:52
推荐回答(2个)
回答1:

读串口啊 解析串口反馈的消息啊 然后存进去么 这是我的程序中的代码 你可以参考下
private void srlptMain_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{
try
{
byte[] result = new byte[64];
srlptMain.Read(result, 0, 8);
Thread.Sleep(100);
srlptMain.Read(result, 8, 7);

/* 1.拆分命令,分成变送器名称,数据组,*/
String tmp_Name = NameFormating(result[0].ToString("X"));
String tmp_Pressure = NameFormating(result[3].ToString("X")) + NameFormating(result[4].ToString("X"));
String tmp_Density = NameFormating(result[5].ToString("X")) + NameFormating(result[6].ToString("X"));
String tmp_Celcius = NameFormating(result[7].ToString("X")) + NameFormating(result[8].ToString("X"));

/* 2.运算校验码*/
byte[] tmp_CRC = new byte[13];
Array.Copy(result, 0, tmp_CRC, 0, 13);
byte[] CRC = AssistTool.CalculateCrc16(tmp_CRC);
if (CRC[0] == result[13] && CRC[1] == result[14])
{

using (var connection = new piezometerEntities(frm.ServerName, frm.LoginId, frm.LoginPwd))
{
var tmp_Group = from p in connection.piezometers where p.Name == tmp_Name select new { GroupId = p.formset.Id, piezometerId = p.Id };
//绘图方法,参数为组名称,设备名称,三组数据
String gid = tmp_Group.FirstOrDefault().GroupId.ToString();
String pid = tmp_Group.FirstOrDefault().piezometerId.ToString();
Chart pieChart = (Chart)tabMain.TabPages[gid].Controls["Pie_" + gid];
Chart mChart = (Chart)tabMain.TabPages[gid].Controls["midu_" + gid];
Chart wChart = (Chart)tabMain.TabPages[gid].Controls["wendu_" + gid];

DateTime saveTime = DateTime.Now;

ThreadDelegate threadDelegate = new ThreadDelegate(DrawLine);
this.Invoke(threadDelegate, new Object[] { pieChart, wChart,
mChart, pid, gid, tmp_Pressure, tmp_Celcius, tmp_Density,
saveTime, tmp_Name });

//存储
warning w = new warning();
w.Type = 1;
w.Time = saveTime;
w.PID = tmp_Group.FirstOrDefault().piezometerId;
w.Celsius = Convert.ToInt32(tmp_Celcius, 16) / 10.0d;
w.Density = Convert.ToInt32(tmp_Density, 16);
w.Pressure = Convert.ToInt32(tmp_Pressure, 16);
dataSaver.Save(w, select_sound, select_value);

}
}

srlptMain.DiscardInBuffer();
srlptMain.DiscardOutBuffer();
}
catch (Exception)
{

//throw;
}

回答2:

同求~~~