c#串口通信温湿度采集,并且上传到数据库,写出代码
时间: 2023-09-07 20:05:18 浏览: 194
基于stm32、BC95通信模块的温湿度采集+源代码+文档说明
### 回答1:
我建议您可以使用C#串口类来实现上述功能。代码示例如下: using System;
using System.IO.Ports;// Create a serial port object
SerialPort serialPort = new SerialPort("COM3", 9600, Parity.None, 8, StopBits.One);// Read data from the serial port
string data = serialPort.ReadLine();// Split the data to get humidity and temperature values
string[] values = data.Split(',');// Insert the values into the database
string sql = "INSERT INTO my_table (Humidity, Temperature) VALUES (@Humidity, @Temperature)";using (var connection = new SqlConnection(connectionString))
{
using (var command = new SqlCommand(sql, connection))
{
command.Parameters.AddWithValue("@Humidity", values[0]);
command.Parameters.AddWithValue("@Temperature", values[1]);
command.ExecuteNonQuery();
}
}// Close the serial port
serialPort.Close();
### 回答2:
使用C#进行串口通信温湿度采集,并将数据上传到数据库的代码示例如下:
```csharp
using System;
using System.IO.Ports;
using System.Data.SqlClient;
namespace SerialPortCommunication
{
class Program
{
static SerialPort serialPort;
static SqlConnection dbConnection;
static void Main(string[] args)
{
// 配置串口
serialPort = new SerialPort("COM1", 9600, Parity.None, 8, StopBits.One);
serialPort.DataReceived += new SerialDataReceivedEventHandler(DataReceivedHandler);
serialPort.Open();
// 连接数据库
string connectionString = "Data Source=server_name;Initial Catalog=database_name;User ID=username;Password=password";
dbConnection = new SqlConnection(connectionString);
dbConnection.Open();
// 保持程序运行
Console.ReadKey();
// 关闭串口和数据库连接
serialPort.Close();
dbConnection.Close();
}
static void DataReceivedHandler(object sender, SerialDataReceivedEventArgs e)
{
// 读取串口数据
string data = serialPort.ReadLine();
// 拆分数据
string[] values = data.Split(',');
if (values.Length == 2)
{
// 提取温度和湿度值
float temperature = float.Parse(values[0]);
float humidity = float.Parse(values[1]);
// 插入数据到数据库表
string query = "INSERT INTO SensorData (Temperature, Humidity) VALUES (@Temperature, @Humidity)";
using (SqlCommand command = new SqlCommand(query, dbConnection))
{
command.Parameters.AddWithValue("@Temperature", temperature);
command.Parameters.AddWithValue("@Humidity", humidity);
command.ExecuteNonQuery();
}
Console.WriteLine("Data inserted: Temperature - " + temperature + ", Humidity - " + humidity);
}
}
}
}
```
请注意,上述代码假设已经创建了一个名为`SensorData`的数据库表,其中包含`Temperature`和`Humidity`两列,类型为浮点型。此外,还需要根据实际的数据库连接信息和串口配置信息进行修改。
### 回答3:
以下是一个简单的示例代码,演示了如何使用C#进行串口通信、温湿度采集,并将数据上传到数据库。
```csharp
using System;
using System.IO.Ports;
using System.Data.SqlClient;
class Program
{
static SerialPort serialPort;
static SqlConnection sqlConnection;
static void Main(string[] args)
{
// 配置串口
string portName = "COM1"; // 串口名称
int baudRate = 9600; // 波特率
Parity parity = Parity.None; // 校验位
int dataBits = 8; // 数据位
StopBits stopBits = StopBits.One; // 停止位
serialPort = new SerialPort(portName, baudRate, parity, dataBits, stopBits);
serialPort.DataReceived += SerialPort_DataReceived; // 配置串口接收事件
// 连接数据库
string connectionString = "[数据库连接字符串]";
sqlConnection = new SqlConnection(connectionString);
sqlConnection.Open();
try
{
serialPort.Open(); // 打开串口
Console.WriteLine("串口已打开");
Console.ReadLine(); // 等待用户按下回车键
}
catch (Exception ex)
{
Console.WriteLine("串口打开失败:" + ex.Message);
}
finally
{
serialPort.Close(); // 关闭串口
sqlConnection.Close(); // 关闭数据库连接
}
}
static void SerialPort_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
SerialPort sp = (SerialPort)sender;
string data = sp.ReadExisting(); // 读取串口数据
// 解析温湿度数据
string[] tempAndHumidity = data.Split(',');
if (tempAndHumidity.Length == 2)
{
float temperature = float.Parse(tempAndHumidity[0]);
float humidity = float.Parse(tempAndHumidity[1]);
// 保存数据到数据库
SqlCommand sqlCommand = new SqlCommand("INSERT INTO TemperatureHumidityData (Temperature, Humidity) VALUES (@Temperature, @Humidity)", sqlConnection);
sqlCommand.Parameters.AddWithValue("@Temperature", temperature);
sqlCommand.Parameters.AddWithValue("@Humidity", humidity);
sqlCommand.ExecuteNonQuery();
Console.WriteLine("温度:" + temperature + "℃,湿度:" + humidity + "%");
}
}
}
```
以上代码仅为示例,需要根据实际情况进行适当修改,包括串口配置、数据库连接字符串以及数据表结构等。
阅读全文