110,534
社区成员
发帖
与我相关
我的任务
分享
this.Invoke(updateSP_receiver, sp.ReadTo("\n")); //updateSP_receiver就是一个textbox接收string显示出来而已.
private bool openSerialPort()
{
//初始化
if (sp == null)
{
portName = listBox_spList.SelectedItem.ToString();
baudRate = int.Parse(cbo_baudRate.SelectedItem.ToString());
parity = (Parity)Enum.Parse(typeof(Parity), cbo_parity.SelectedItem.ToString()); //字符串到枚举指定类型的转换
dataBits = int.Parse(cbo_dataBits.SelectedItem.ToString());
stopBits = (StopBits)Enum.Parse(typeof(StopBits), cbo_stopBits.SelectedItem.ToString());
updateSP_receiver = new del_updateSP_receiver(update_tb_receiver);
sp = new SerialPort(portName, baudRate, parity, dataBits, stopBits); //初始化串口
sp.ReadTimeout = 5000;
sp.WriteTimeout = 5000;
//sp.ReceivedBytesThreshold = 26;
sp.DataReceived += new SerialDataReceivedEventHandler(sp_DataReceived); //事件订阅
}
try
{
if (!sp.IsOpen) //打开
{
sp.Open();
btn_openSP.Text = "关闭串口";
tb_sendstr.Enabled = true; //打开发送输入box
msgUpdate(portName + "打开成功!");
}
else //关闭
{
sp.DiscardInBuffer();
Thread.Sleep(500);
sp.Close();
btn_openSP.Text = "打开串口";
sp.Dispose(); //释放sp使用的资源
sp = null; //销毁sp
tb_sendstr.Enabled = false; //关闭发送输入box
msgUpdate(portName + "关闭成功!");
}
}
catch (Exception i)
{
sp.Dispose();
sp = null;
msgUpdate(portName + "操作失败!," + "异常原因:\r\n" + i);
return false;
}
return true;
}