将 Mosquitto 消息插入 dataGridView
Insert Mosquitto Message into dataGridView
你好,我有一个应用程序,它通过 Mosquitto Broker 将带有值的消息从一个传感器发送到 C# 中的另一个应用程序。
我有 3 个主题 "topicTemperature, topicHumidity and topicBatery" 每个主题,消息是一个带有 "sensorID SensorValue Date" 的字符串 我有一个包含以下列 "ID, Temperature, Humidity, Batteries, and Date" 的 dataGridView。
消息示例:
"2 22.3 04/12/2019" //TopicTemperature
"2 47.9 04/12/2019" //TopicHumidity
"2 99 04/12/2019" //TopicBatery
我有这个代码:
string[] data;
if (String.Equals(e.Topic, "topicTemperature")){
data = Encoding.UTF8.GetString(e.Message).Split(null);
dataGridView1.Rows.Add(data[0], data[1]);
}
if (String.Equals(e.Topic, "topicHumidity")){
data = Encoding.UTF8.GetString(e.Message).Split(null);
dataGridView1.Rows.Add(data[1]);
}
if (String.Equals(e.Topic, "topicBatery")){
data = Encoding.UTF8.GetString(e.Message).Split(null);
dataGridView1.Rows.Add(data[1], data[2]);
}
这是输出:
我想要这个输出:
我需要进行哪些更改才能使其正常工作?
编辑:使用 Jacobs 代码输出
我认为您最好的选择是先创建行,然后添加您的值。这样就可以控制每条数据插入到哪一列了。
编辑:下面的代码给了我下面图片的输出。我不得不使用你给我的输入,因为我没有传感器,但这应该是你需要的相同概念。
int rowNum = dataGridView1.Rows.Add();
string temp = "2 22.3 04/12/2019";
string humid = "2 47.9 04/12/2019";
string batery = "2 99 04/12/2019";
DataGridViewRow row = dataGridView1.Rows[rowNum];
string[] data;
if (String.Equals(temp,temp))
{
data = temp.Split(null);
row.Cells["SensorID"].Value = data[0];
row.Cells["Temperature"].Value = data[1];
}
if (String.Equals(humid, humid))
{
data = humid.Split(null);
row.Cells["Humidity"].Value = data[1];
}
if (String.Equals(batery, batery))
{
data = batery.Split(null);
row.Cells["Batery"].Value = data[1];
row.Cells["Date"].Value = data[2];
}
您将需要循环创建行,但这应该可以提供一个思路。
你好,我有一个应用程序,它通过 Mosquitto Broker 将带有值的消息从一个传感器发送到 C# 中的另一个应用程序。 我有 3 个主题 "topicTemperature, topicHumidity and topicBatery" 每个主题,消息是一个带有 "sensorID SensorValue Date" 的字符串 我有一个包含以下列 "ID, Temperature, Humidity, Batteries, and Date" 的 dataGridView。 消息示例:
"2 22.3 04/12/2019" //TopicTemperature
"2 47.9 04/12/2019" //TopicHumidity
"2 99 04/12/2019" //TopicBatery
我有这个代码:
string[] data;
if (String.Equals(e.Topic, "topicTemperature")){
data = Encoding.UTF8.GetString(e.Message).Split(null);
dataGridView1.Rows.Add(data[0], data[1]);
}
if (String.Equals(e.Topic, "topicHumidity")){
data = Encoding.UTF8.GetString(e.Message).Split(null);
dataGridView1.Rows.Add(data[1]);
}
if (String.Equals(e.Topic, "topicBatery")){
data = Encoding.UTF8.GetString(e.Message).Split(null);
dataGridView1.Rows.Add(data[1], data[2]);
}
这是输出:
我想要这个输出:
我需要进行哪些更改才能使其正常工作?
编辑:使用 Jacobs 代码输出
我认为您最好的选择是先创建行,然后添加您的值。这样就可以控制每条数据插入到哪一列了。
编辑:下面的代码给了我下面图片的输出。我不得不使用你给我的输入,因为我没有传感器,但这应该是你需要的相同概念。
int rowNum = dataGridView1.Rows.Add();
string temp = "2 22.3 04/12/2019";
string humid = "2 47.9 04/12/2019";
string batery = "2 99 04/12/2019";
DataGridViewRow row = dataGridView1.Rows[rowNum];
string[] data;
if (String.Equals(temp,temp))
{
data = temp.Split(null);
row.Cells["SensorID"].Value = data[0];
row.Cells["Temperature"].Value = data[1];
}
if (String.Equals(humid, humid))
{
data = humid.Split(null);
row.Cells["Humidity"].Value = data[1];
}
if (String.Equals(batery, batery))
{
data = batery.Split(null);
row.Cells["Batery"].Value = data[1];
row.Cells["Date"].Value = data[2];
}
您将需要循环创建行,但这应该可以提供一个思路。