110,565
社区成员
发帖
与我相关
我的任务
分享
private void btnComOpen_Click(object sender, EventArgs e)
{
if (btnComOpen.Tag.ToString() == "0")
{
ComDevice.PortName = cbbComList.SelectedItem.ToString();
ComDevice.BaudRate = 115200;
ComDevice.Parity = (Parity)0;
ComDevice.DataBits = 8;
ComDevice.StopBits = (StopBits)1;
try
{
ComDevice.Open();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
btnComOpen.Text = "关 闭";
btnComOpen.Tag = "1";
picComStatus.Image = Properties.Resources.green;
ComDevice.DataReceived += new SerialDataReceivedEventHandler(ComDevice_DataReceived);
}
else
{
try
{
ComDevice.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
btnComOpen.Text = "打 开";
btnComOpen.Tag = "0";
picComStatus.Image = Properties.Resources.red;
}
}
#region 接收数据
private void ComDevice_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
byte[] ReDatas = new byte[ComDevice.BytesToRead];//返回命令包
ComDevice.Read(ReDatas, 0, ReDatas.Length);//读取数据
UpdateRecevie(System.Text.Encoding.Default.GetString(ReDatas));
}
public delegate void UpdateString(object NewData);
public void UpdateRecevie(object NewData)
{
if (this.InvokeRequired)//等待异步
{
UpdateString _myInvoke = new UpdateString(UpdateRecevie);
this.Invoke(_myInvoke, new object[] { NewData });
}
else
{
txtComReceive.AppendText(NewData.ToString());
txtComReceive.SelectionStart = txtComReceive.Text.Length - 1;
txtComReceive.ScrollToCaret();
}
}
#endregion
private void ComDevice_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
UpdateRecevie(ComDevice.ReadExisting());
}