用C#在一台电脑上面做串口调试的程序代码
2013-08-30 15:40
671 查看
今天要做一个串口的调试小程序,我就在一个例子的上面做了一些小的修改!!
代码如下:
sing System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO.Ports;
namespace SerialPortTest
{
public partial class Form1 : Form
{
SerialPort sp = null;
bool IsOpen = false;
bool IsSetProperty = false;
public Form1()
{
InitializeComponent();
}
private void btnExit_Click(object sender, EventArgs e) //退出程序
{
sp.Close();
Application.Exit();
}
private void btnFindPort_Click(object sender, EventArgs e) //检测可用的串口
{
PortChoose.Items.Clear();
for (int i = 0; i <256; i++)
{
try
{
SerialPort sp =new SerialPort("COM"+(i+1).ToString());
sp.Open();
sp.Close();
PortChoose.Items.Add("COM"+(i+1).ToString());
}
catch(Exception)
{
labelState.Text= "COM"+(i+1).ToString()+"不可用";
continue;
}
}
}
private void Form1_Load(object sender, EventArgs e)
{
this.MaximumSize = this.Size;
this.MinimumSize = this.Size;
for (int i = 0; i < 256; i++)
{
PortChoose.Items.Add("COM" + (i + 1).ToString());
}
}
private bool CheckPortSetting() //检查串口设置
{
if (PortChoose.Text.Trim() == "" || PortJiOu.Text.Trim() == "" || PortBaude.Text.Trim() == "" || PortData.Text.Trim() == "" || PortStop.Text.Trim() == "")
{
return false;
}
else
{
return true;
}
}
private bool SendData()
{
if (SendDataBox.Text.Trim() == "")
{ return false; }
else
{ return true;}
}
private void SetPortProperty() //设置串口的属性
{
sp = new SerialPort();
sp.PortName = PortChoose.Text.Trim();
sp.BaudRate = Convert.ToInt32( PortBaude.Text.Trim());
float f = Convert.ToSingle(PortStop.Text.Trim());
if (f == 0)
{
sp.StopBits = StopBits.None;
}
else if (f == 1)
{
sp.StopBits = StopBits.One;
}
else if (f == 1.5)
{
sp.StopBits = StopBits.OnePointFive;
}
else if (f == 2)
{
sp.StopBits = StopBits.Two;
}
else
{
sp.StopBits = StopBits.One;
}
sp.DataBits = Convert.ToInt16(PortData.Text.Trim());
//设置ji偶校验位
string s = PortJiOu.Text.Trim();
if (s.CompareTo("无")==0)
{
sp.Parity = Parity.None;
}
else if (s.CompareTo("奇校验") == 0)
{
sp.Parity = Parity.Odd;
}
else if (s.CompareTo("偶校验") == 0)
{
sp.Parity = Parity.Even;
}
else
{
sp.Parity = Parity.None;
}
sp.ReadTimeout = -1; //设置超时读取时间
//打开串口
try
{
sp.Open();
IsOpen = true;
}
catch (Exception)
{
labelState.Text = "打开串口时发生错误!";
}
}
private void btnSendData_Click(object sender, EventArgs e) //发送数据
{
if (!CheckPortSetting())
{
MessageBox.Show("串口未设置!", "错误提示!");
return;
}
if (!SendData())
{
MessageBox.Show("输入要发送的数据!", "错误提示!");
return;
}
if (!IsSetProperty)
{
SetPortProperty();
IsSetProperty = true;
}
if (IsOpen)
{
try
{
sp.Close();
sp.Open();
sp.WriteLine(SendDataBox.Text);
}
catch (Exception)
{
labelState.Text = "发送数据时发生错误!";
return;
}
}
else
{
MessageBox.Show("串口未打开!","错误提示!");
return;
}
SendDataBox.Text = "";
}
private void btnAcepptData_Click(object sender, EventArgs e) /接收数据
{
if (IsOpen)
{
try
{
//读取串口数据
AcceptDataBox.Text += sp.ReadLine();
}
catch (Exception)
{
labelState.Text = "读取失败!";
return;
}
finally
{
sp.Close();
}
}
else
{
MessageBox.Show("串口未打开!", "提示!");
return;
}
}
}
}
代码如下:
sing System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO.Ports;
namespace SerialPortTest
{
public partial class Form1 : Form
{
SerialPort sp = null;
bool IsOpen = false;
bool IsSetProperty = false;
public Form1()
{
InitializeComponent();
}
private void btnExit_Click(object sender, EventArgs e) //退出程序
{
sp.Close();
Application.Exit();
}
private void btnFindPort_Click(object sender, EventArgs e) //检测可用的串口
{
PortChoose.Items.Clear();
for (int i = 0; i <256; i++)
{
try
{
SerialPort sp =new SerialPort("COM"+(i+1).ToString());
sp.Open();
sp.Close();
PortChoose.Items.Add("COM"+(i+1).ToString());
}
catch(Exception)
{
labelState.Text= "COM"+(i+1).ToString()+"不可用";
continue;
}
}
}
private void Form1_Load(object sender, EventArgs e)
{
this.MaximumSize = this.Size;
this.MinimumSize = this.Size;
for (int i = 0; i < 256; i++)
{
PortChoose.Items.Add("COM" + (i + 1).ToString());
}
}
private bool CheckPortSetting() //检查串口设置
{
if (PortChoose.Text.Trim() == "" || PortJiOu.Text.Trim() == "" || PortBaude.Text.Trim() == "" || PortData.Text.Trim() == "" || PortStop.Text.Trim() == "")
{
return false;
}
else
{
return true;
}
}
private bool SendData()
{
if (SendDataBox.Text.Trim() == "")
{ return false; }
else
{ return true;}
}
private void SetPortProperty() //设置串口的属性
{
sp = new SerialPort();
sp.PortName = PortChoose.Text.Trim();
sp.BaudRate = Convert.ToInt32( PortBaude.Text.Trim());
float f = Convert.ToSingle(PortStop.Text.Trim());
if (f == 0)
{
sp.StopBits = StopBits.None;
}
else if (f == 1)
{
sp.StopBits = StopBits.One;
}
else if (f == 1.5)
{
sp.StopBits = StopBits.OnePointFive;
}
else if (f == 2)
{
sp.StopBits = StopBits.Two;
}
else
{
sp.StopBits = StopBits.One;
}
sp.DataBits = Convert.ToInt16(PortData.Text.Trim());
//设置ji偶校验位
string s = PortJiOu.Text.Trim();
if (s.CompareTo("无")==0)
{
sp.Parity = Parity.None;
}
else if (s.CompareTo("奇校验") == 0)
{
sp.Parity = Parity.Odd;
}
else if (s.CompareTo("偶校验") == 0)
{
sp.Parity = Parity.Even;
}
else
{
sp.Parity = Parity.None;
}
sp.ReadTimeout = -1; //设置超时读取时间
//打开串口
try
{
sp.Open();
IsOpen = true;
}
catch (Exception)
{
labelState.Text = "打开串口时发生错误!";
}
}
private void btnSendData_Click(object sender, EventArgs e) //发送数据
{
if (!CheckPortSetting())
{
MessageBox.Show("串口未设置!", "错误提示!");
return;
}
if (!SendData())
{
MessageBox.Show("输入要发送的数据!", "错误提示!");
return;
}
if (!IsSetProperty)
{
SetPortProperty();
IsSetProperty = true;
}
if (IsOpen)
{
try
{
sp.Close();
sp.Open();
sp.WriteLine(SendDataBox.Text);
}
catch (Exception)
{
labelState.Text = "发送数据时发生错误!";
return;
}
}
else
{
MessageBox.Show("串口未打开!","错误提示!");
return;
}
SendDataBox.Text = "";
}
private void btnAcepptData_Click(object sender, EventArgs e) /接收数据
{
if (IsOpen)
{
try
{
//读取串口数据
AcceptDataBox.Text += sp.ReadLine();
}
catch (Exception)
{
labelState.Text = "读取失败!";
return;
}
finally
{
sp.Close();
}
}
else
{
MessageBox.Show("串口未打开!", "提示!");
return;
}
}
}
}
相关文章推荐
- C#判断手机访问和电脑访问程序代码
- 如何在一台电脑上调试串口收发数据
- 如何在WinCE模拟器中调试串口程序(两台设备、一台设备的两种情况下的串口调试)
- C#判断手机访问和电脑访问程序代码
- SerialMonitor:C#写的串口调试程序
- c#实现一个程序在一台电脑上只运行一个实例
- c# 更改注册表开机启动+mutex(互斥,同一时间同一台电脑只能运行一个程序)
- PIC18单片机端C语言serial bootloader和PC端C#语言bootloader串口通信程序
- 编写高质量代码改善C#程序的157个建议[协变和逆变]
- 利用C#编写修改注册表的程序代码
- c#开机自动启动程序实现代码
- [CLR via C#]1.4 执行程序集的代码
- c# il (中间代码)exe,dll(编译成的程序) 之间的转换
- 调试程序时总会提示代码过期的处理办法....
- c++程序代码使用指针调试运行出错分析
- XCode4如何解决调试程序时,忽然崩溃,而找不到崩溃的代码
- C#代码分析--阅读程序,回答问题
- c#实现为程序绑定电脑简单实现方法
- C#中如何使用断点操作调试程序
- [问]VS2005,C#winform程序,代码修改app.config的结果保存到哪里了?