111,125
社区成员
发帖
与我相关
我的任务
分享
private void com_data_receive(object sender, SerialDataReceivedEventArgs e)
{
if (Closing) return;
try
{
Listening = true;
byte[] buf = new byte[24];
receive_count += 1;
COM.Read(buf, 0, 24);
COM.DiscardInBuffer();
string receive_data = "";
for (int i = 0; i < buf.Length; i++)
{
receive_data += buf[i].ToString("X2");
}
string temperature = get_temperature(receive_data.Substring(36, 4)).ToString("0.00");
string humility = get_humility(receive_data.Substring(40, 4)).ToString("0.00");
string illumination = get_illumination(receive_data.Substring(44, 4)).ToString("0.00");
this.Invoke((EventHandler)(delegate
{
ListViewItem lvi = new ListViewItem(receive_count.ToString());
lvi.SubItems.Add(temperature);
lvi.SubItems.Add(humility);
lvi.SubItems.Add(illumination);
listView1.Items.Add(lvi);
}));
}
private void button4_Click(object sender, EventArgs e)
{
if (comboBox1.SelectedItem != null && comboBox2.SelectedItem != null && comboBox3.SelectedItem != null && comboBox4.SelectedItem != null && comboBox5.SelectedItem != null)
{
if (COM.IsOpen)
{
Closing = true;
while (Listening) Application.DoEvents();
COM.Close();
COM.Dispose();
Closing = false;
}
else
{
com_setting();
try
{
COM.Open();
COM.DataReceived += new SerialDataReceivedEventHandler(com_data_receive);
}
catch (Exception ex)
{
COM.Close();
COM.Dispose();
COM = new SerialPort();
MessageBox.Show(ex.Message);
}
}
button4.Text = COM.IsOpen ? "关闭" : "开始";
}
else
{
MessageBox.Show("请设置参数");
}
}
private void com_setting()
{
COM.PortName = comboBox1.Text;
COM.NewLine = "\r\n";
COM.RtsEnable = true;
COM.BaudRate = int.Parse(comboBox2.Text);
COM.DataBits = int.Parse(comboBox3.Text);
switch (comboBox4.SelectedIndex)
{
case 0: COM.Parity = Parity.None; break;
case 1: COM.Parity = Parity.Odd; break;
case 2: COM.Parity = Parity.Even; break;
case 3: COM.Parity = Parity.Mark; break;
case 4: COM.Parity = Parity.Space; break;
default: COM.Parity = Parity.None; break;
}
switch (comboBox5.SelectedIndex)
{
case 0: COM.StopBits = StopBits.One; break;
case 1: COM.StopBits = StopBits.OnePointFive; break;
case 2: COM.StopBits = StopBits.Two; break;
default: COM.StopBits = StopBits.One; break;
}
}