如题,原文件很大,50多万个字符吧。不知道是不是太大影响的
以下是代码
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO.Ports;
namespace 串口实验2
{
public partial class Form1 : Form
{
string s = "";
string ss = "";
string[] s_1;
int i=0;
SerialPort serialPort1 = new SerialPort("COM2", 9600, Parity.None, 8, StopBits.One); //初始化串口设置
public delegate void Displaydelegate(byte[] InputBuf);
// Byte[] OutputBuf = new Byte[128];
public Displaydelegate disp_delegate;
public Form1()
{
disp_delegate = new Displaydelegate(DispUI);
serialPort1.DataReceived += new SerialDataReceivedEventHandler(Comm_DataReceived);
InitializeComponent();
this.BackgroundImage = Image.FromFile(@"C:\Users\hasee\Desktop\plane.jpg");
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void button1_Click(object sender, EventArgs e)
{
try
{
if (button1.Text == "打开")
{
serialPort1.Open();
button1.Text = "关闭";
}
else
{
serialPort1.Close();
button1.Text = "打开";
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "错误提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
}
void Comm_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
int count = serialPort1.BytesToRead;
Byte[] InputBuf = new Byte[count];
try
{
serialPort1.Read(InputBuf, 0, serialPort1.BytesToRead); //读取缓冲区的数据直到“}”即0x7D为结束符
System.Threading.Thread.Sleep(50);
this.Invoke(disp_delegate, InputBuf);
}
catch (TimeoutException ex) //超时处理
{
MessageBox.Show(ex.ToString());
}
}
public void DispUI(byte[] InputBuf)
{
ASCIIEncoding encoding = new ASCIIEncoding();
s= encoding.GetString(InputBuf);
ss = s.Replace(@"\r\nNNNN", "a");
s_1=ss.Split(new char[] { 'a' });
// TextBox1.Text = ss;// encoding.GetString(InputBuf);
}
private void timer1_Tick(object sender, EventArgs e)
{
//TextBox1.Text = s_1[i];
TextBox1.Text = s_1.Length.ToString();
i = i + 1;
}
private void button2_Click(object sender, EventArgs e)
{
timer1.Enabled = true;
timer1.Interval = 10;
}
}
}