private SerialPort serialport = new SerialPort();
private StringBuilder builder = new StringBuilder();
// private StringBuilder bs = new StringBuilder();//用于存储一条完整信息;
Boolean ope = false;
public Form1()
{
InitializeComponent();
Control.CheckForIllegalCrossThreadCalls = false;
}
private void Form1_Load(object sender, EventArgs e)
{
string[] names = SerialPort.GetPortNames();
if (names == null)
{
MessageBox.Show("没有可用的串口", "提示");
}
else
{
foreach (string str in names)
{
toolStripComboBox2_Potrs.Items.Add(str);
}
}
toolStripComboBox1_Rate.Text = "9600";
toolStripComboBox1_Rate.Items.Add("4800");
toolStripComboBox1_Rate.Items.Add("9600");
//添加事件注册
serialport.DataReceived += new SerialDataReceivedEventHandler(serialPort_DataRecived);
}
void serialPort_DataRecived(object sender, SerialDataReceivedEventArgs e)
{
Thread.Sleep(500);
builder.Clear();//清除字符串构造器的内容
string str = "";
int n = serialport.BytesToRead;//先记录下来,避免丢失
label3.Text = n.ToString();
byte[] buf = new byte[n];
serialport.Read(buf, 0, n);//读取缓冲区数据
this.Invoke((EventHandler)(delegate
{
if (checkBox1_Hex.Checked)
{
foreach (byte b in buf)
{
builder.Append(b.ToString("X2") + " ");
}
}
else
{
//直接以ASCII规则输出
builder.Append(Encoding.ASCII.GetString(buf));
// bs.Append(Encoding.ASCII.GetString(buf));
}
//追加文本
this.textBox1_ReciMes.AppendText(builder.ToString());
//create a new thread
//;
Thread t = new Thread(new ParameterizedThreadStart(Options));
Console.WriteLine(builder.ToString());
t.Start(builder.ToString());
}));
}