private StringBuilder builder = new StringBuilder();
public string receive_content = string.Empty;
/// <summary>
/// 构造函数
/// </summary>
/// <param name="com">烧录器对应的串口号</param>
/// <param name="Baudrate">波特率默认115200</param>
///
public className(string com, int Baudrate = 115200)
{
try
{
if (com == null)
com = SerialPort.GetPortNames()[0];
BurnDevice = new SerialPort();
BurnDevice = new SerialPort(com, Baudrate, Parity.None, 8, StopBits.One);
/// <summary>
/// ConfigureMgr.getInstance().getValue()用于获取配置文件
/// 为个burner的实例绑定相应的数据接收处理事件
/// </summary>
//if (ConfigureMgr.getInstance().getValue("Burn1Comport") == com)
BurnDevice.DataReceived += new SerialDataReceivedEventHandler(serialPort_DataReceived);
if (BurnDevice.IsOpen == false)
{
try
{
BurnDevice.Open();
}
catch (Exception)
{
if (MessageBox.Show("串口打开失败,请检查接口并重插","请确认",MessageBoxButtons.OKCancel) == DialogResult.OK)
{
BurnDevice.Open();
}
}
}
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
//Log.writeLog(ex.ToString(), ErrorLevel.ERROR, "PL03");
}
}
/// <summary>
/// 从串口收到数据时调用
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
///
public void serialPort_Burn1DataReceived(object sender, SerialDataReceivedEventArgs e)
{
try
{
int n = BurnDevice.BytesToRead;
if (n == 0)
return;
string recvStr = string.Empty;
byte[] buf = new byte[n];
BurnDevice.Read(buf, 0, n);
builder.Clear();
builder.Append(Encoding.ASCII.GetString(buf));
receive_content = builder.ToString();//解析这个就好
}catch.......不细写了
}