通过C#端获取串口数据
}
using MySql.Data.MySqlClient;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO.Ports;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Winfire
{
public partial class FrmMain : Form
{
MySqlConnection con;
String connetStr = "server=localhost;user=root;password=123456;database=mysql";
private SerialPort ComDevice = new SerialPort();
private delegate void Control_call_back();
bool StopGetWeight = false;
public FrmMain()
{
InitializeComponent();
cbxCom .Items.AddRange(SerialPort.GetPortNames());
if (cbxCom .Items.Count > 0)
{
cbxCom .SelectedIndex = 0;
btnCom.Enabled = true;
}
ComDevice.DataReceived += new SerialDataReceivedEventHandler(Com_DataReceived1);
}
private void Com_DataReceived1(object sender, SerialDataReceivedEventArgs e)
{
if (!StopGetWeight)
{
byte[] ReDatas = new byte[ComDevice.BytesToRead];
ComDevice.Read(ReDatas, 0, ReDatas.Length);//读取数据
DataReceived1(richTextBox1, ReDatas);
Thread.Sleep(100);
}
else//停止
{
if (ComDevice.IsOpen)
ComDevice.Close();
}
}
string tempdata = "";
string[] Data = new string[5];
public void DataReceived1(Control c, byte[] b)
{
string data = Encoding.Default.GetString(b);
lock (tempdata)
{
if (data.IndexOf("\r") < 0)
{
tempdata = (tempdata + data).Trim();
return;
}
else
{
data = tempdata.ToString() + data;
tempdata = "";
}
}
c.Invoke(new MethodInvoker(delegate
{
richTextBox1.AppendText(data);
richTextBox1.ScrollToCaret();
try
{
data = data.Split('\r')[0];
}
catch (Exception ex)
{
}
}));
}
private void btnCom_Click(object sender, EventArgs e)
{
if (ComDevice.IsOpen == false)
{
try
{
StopGetWeight = false;
ComDevice.PortName = cbxCom.SelectedItem.ToString();
ComDevice.BaudRate = Convert.ToInt32(cbxBaud.SelectedItem.ToString());
ComDevice.Open();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
//WriteControl(2, tempControlbool);
btnCom.Text = "停止发送数据";
}
else
{
try
{
ComDevice.Close();
StopGetWeight = true;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
btnCom.Text = "获取当前数据";
}
cbxCom.Enabled = !ComDevice.IsOpen;
cbxBaud.Enabled = !ComDevice.IsOpen;
}
private void button1_Click(object sender, EventArgs e)
{
MySqlConnection con = new MySqlConnection(connetStr);
try
{
con.Open();
MessageBox.Show("成功连接!");
}
catch (MySqlException ex)
{
MessageBox.Show(ex.Message);
}
MessageBox.Show("连接成功!");
FrmInfo frmInfo = new FrmInfo ();
frmInfo .Show();
this.Hide();
}
}