public partial class Main : Form
{
// private string[] ports = { "COM1" };
private string[] baud = {"110", "300", "600", "1200", "2400", "4800", "9600",
"14400", "19200", "38400", "57600", "115200", "230400",
"380400", "460800", "921600"};
private string[] dataBit = { "5", "6", "7", "8" };
private string[] parityCheck = { "无", "奇校验", "偶校验", "标记", "空格" };
private string[] stopBit = { "1", "1.5", "2" };
static SerialPort serialport;
string pathFile;
public Main()
{
InitializeComponent();
this.reset();
}
private void Reset_Click(object sender, EventArgs e)
{
this.reset();
}
public void reset()
{
port.Items.Clear();
for(int i =0;i <= 50; i++)
{
string temp = "COM";
temp += i.ToString();
port.Items.Add(temp);
}
port.Text = "COM4";
baudRate.Items.Clear();
foreach (string temp in baud)
{
baudRate.Items.Add(temp);
}
baudRate.Text = baud[6];//baudRate.Text=baudRate.Items[0] as string;
dataBits.Items.Clear();
foreach (string temp in dataBit)
{
dataBits.Items.Add(temp);
}
dataBits.Text = dataBit[3];
parity.Items.Clear();
foreach (string temp in parityCheck)
{
parity.Items.Add(temp);
}
parity.Text = parityCheck[0];
stopBits.Items.Clear();
foreach (string temp in stopBit)
{
stopBits.Items.Add(temp);
}
stopBits.Text = stopBit[0];
}
//先打开窗口,选择完路径和文件名,点击确定后开始接受。
private void saveFile_Click(object sender, EventArgs e)
{
SaveFileDialog sfd = new SaveFileDialog();
sfd.Title = "另存为对话框";//对话框标题
//sfd.InitialDirectory = "C:\\";//对话框初始目录
sfd.Filter = "文本文件|*.txt|所有文件|*.*";
if (sfd.ShowDialog() != DialogResult.OK)
{
//bmp.Save(sfd.FileName);//这里看清楚,对话框只是负责提供打开和保存路径
MessageBox.Show("没有成功选择数据文件保存路径及名称");
}
try
{
FileStream filestreamlength = new FileStream(sfd.FileName, FileMode.CreateNew, FileAccess.ReadWrite);
filestreamlength.Close();
}
catch (IOException)
{
string temp = sfd.FileName+="文件已经存在,重起名";
MessageBox.Show(temp);
}
pathFile = sfd.FileName;
int rate = int.Parse(baudRate.Text);//波特率
Parity par = Parity.None;//奇偶校验
if (parity.Text == parityCheck[1])
par = Parity.Odd;
else if (parity.Text == parityCheck[2])
par = Parity.Even;
else if (parity.Text == parityCheck[3])
par = Parity.Mark;
else if (parity.Text == parityCheck[4])
par = Parity.Space;
int data = int.Parse(dataBits.Text);//数据位
StopBits stop = StopBits.One;//停止位
if (stopBits.Text == stopBit[1])
stop = StopBits.OnePointFive;
else if (stopBits.Text == stopBit[2])
stop = StopBits.Two;
serialport = new SerialPort(port.Text, rate, par, data, stop);
serialport.ReadBufferSize = 5000;
serialport.Open();
//string aa = serialport.ReadLine();
//不行就把下边的创建一个线程
//配置串口
Thread t = new Thread(new ThreadStart(ThreadProc));
t.Start();
}
public void ThreadProc()
{
string str;
bool quit = true;
StreamWriter writerName = new StreamWriter(pathFile);
while (quit)//循环接受,并下到文件中
{
try
{
str = serialport.ReadLine();//串口在exit中关闭后悔发生异常
}
catch
{
// Thread.Ab// WaitCursor.exit(); // kill();
writerName.Close();
break;//application.ExitThread 不好使
// str = " 端到端"
}
writerName.WriteLine(str);
writerName.Flush();
//或如下是不行的,有可能if进去了,但串口已经关闭了
//if (serialport.IsOpen)
//{
// str = serialport.ReadLine();
// writerName.WriteLine(str);
// writerName.Flush();
//}
//else
//{
// quit = false; //这样quit
// writerName.Close();
//}
}
}
private void exit_Click(object sender, EventArgs e)
{
try
{
serialport.Close();
// writerName.Close();//或者移到死循环后边 调试试试
}
catch { }
this.Dispose();
}
private void windowCloseing(object sender, FormClosingEventArgs e)
{
try
{
serialport.Close();
}
catch { }
}
{
// private string[] ports = { "COM1" };
private string[] baud = {"110", "300", "600", "1200", "2400", "4800", "9600",
"14400", "19200", "38400", "57600", "115200", "230400",
"380400", "460800", "921600"};
private string[] dataBit = { "5", "6", "7", "8" };
private string[] parityCheck = { "无", "奇校验", "偶校验", "标记", "空格" };
private string[] stopBit = { "1", "1.5", "2" };
static SerialPort serialport;
string pathFile;
public Main()
{
InitializeComponent();
this.reset();
}
private void Reset_Click(object sender, EventArgs e)
{
this.reset();
}
public void reset()
{
port.Items.Clear();
for(int i =0;i <= 50; i++)
{
string temp = "COM";
temp += i.ToString();
port.Items.Add(temp);
}
port.Text = "COM4";
baudRate.Items.Clear();
foreach (string temp in baud)
{
baudRate.Items.Add(temp);
}
baudRate.Text = baud[6];//baudRate.Text=baudRate.Items[0] as string;
dataBits.Items.Clear();
foreach (string temp in dataBit)
{
dataBits.Items.Add(temp);
}
dataBits.Text = dataBit[3];
parity.Items.Clear();
foreach (string temp in parityCheck)
{
parity.Items.Add(temp);
}
parity.Text = parityCheck[0];
stopBits.Items.Clear();
foreach (string temp in stopBit)
{
stopBits.Items.Add(temp);
}
stopBits.Text = stopBit[0];
}
//先打开窗口,选择完路径和文件名,点击确定后开始接受。
private void saveFile_Click(object sender, EventArgs e)
{
SaveFileDialog sfd = new SaveFileDialog();
sfd.Title = "另存为对话框";//对话框标题
//sfd.InitialDirectory = "C:\\";//对话框初始目录
sfd.Filter = "文本文件|*.txt|所有文件|*.*";
if (sfd.ShowDialog() != DialogResult.OK)
{
//bmp.Save(sfd.FileName);//这里看清楚,对话框只是负责提供打开和保存路径
MessageBox.Show("没有成功选择数据文件保存路径及名称");
}
try
{
FileStream filestreamlength = new FileStream(sfd.FileName, FileMode.CreateNew, FileAccess.ReadWrite);
filestreamlength.Close();
}
catch (IOException)
{
string temp = sfd.FileName+="文件已经存在,重起名";
MessageBox.Show(temp);
}
pathFile = sfd.FileName;
int rate = int.Parse(baudRate.Text);//波特率
Parity par = Parity.None;//奇偶校验
if (parity.Text == parityCheck[1])
par = Parity.Odd;
else if (parity.Text == parityCheck[2])
par = Parity.Even;
else if (parity.Text == parityCheck[3])
par = Parity.Mark;
else if (parity.Text == parityCheck[4])
par = Parity.Space;
int data = int.Parse(dataBits.Text);//数据位
StopBits stop = StopBits.One;//停止位
if (stopBits.Text == stopBit[1])
stop = StopBits.OnePointFive;
else if (stopBits.Text == stopBit[2])
stop = StopBits.Two;
serialport = new SerialPort(port.Text, rate, par, data, stop);
serialport.ReadBufferSize = 5000;
serialport.Open();
//string aa = serialport.ReadLine();
//不行就把下边的创建一个线程
//配置串口
Thread t = new Thread(new ThreadStart(ThreadProc));
t.Start();
}
public void ThreadProc()
{
string str;
bool quit = true;
StreamWriter writerName = new StreamWriter(pathFile);
while (quit)//循环接受,并下到文件中
{
try
{
str = serialport.ReadLine();//串口在exit中关闭后悔发生异常
}
catch
{
// Thread.Ab// WaitCursor.exit(); // kill();
writerName.Close();
break;//application.ExitThread 不好使
// str = " 端到端"
}
writerName.WriteLine(str);
writerName.Flush();
//或如下是不行的,有可能if进去了,但串口已经关闭了
//if (serialport.IsOpen)
//{
// str = serialport.ReadLine();
// writerName.WriteLine(str);
// writerName.Flush();
//}
//else
//{
// quit = false; //这样quit
// writerName.Close();
//}
}
}
private void exit_Click(object sender, EventArgs e)
{
try
{
serialport.Close();
// writerName.Close();//或者移到死循环后边 调试试试
}
catch { }
this.Dispose();
}
private void windowCloseing(object sender, FormClosingEventArgs e)
{
try
{
serialport.Close();
}
catch { }
}