using 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;
using System.Threading;
namespace MyFirstSerial
{
public partial class Form2 : Form
{
SerialPort serialPort = null;
public Form2()
{
InitializeComponent();
this.WindowState = FormWindowState.Maximized;
//Control.CheckForIllegalCrossThreadCalls = false;
InitSerialPort();
this.FormClosed += this.SerialPortClosed;
}
public void InitSerialPort()
{
serialPort = new SerialPort();
serialPort.BaudRate = 19200;//比特率
serialPort.Encoding = Encoding.Default;
serialPort.Parity = Parity.Odd;//奇偶校验
serialPort.PortName = "COM3";//串口3
serialPort.StopBits = StopBits.Two;//停止位2
serialPort.Open();//打开串口
}
/// <summary>
/// 发送数据
/// </summary>
public void SendData()
{
serialPort.Write(this.txtSend.Text);
}
/// <summary>
/// 发送字节数据
/// </summary>
public void SendBytesData()
{
Byte[] _byte = new byte[1024];
_byte = Encoding.Default.GetBytes(this.txtSend.Text);
serialPort.Write(_byte, 0, _byte.Length);
}
public void ReceiveData(SerialPort serialPort)
{
Thread receData = new Thread(new ParameterizedThreadStart(ReceiveDataThread));
receData.Start(serialPort);
}
public void ReceiveDataThread(object serialport)
{
SerialPort serial = (SerialPort)serialport;
System.Threading.Thread.Sleep(0);
serial.ReadTimeout = 2000;
try
{
int byteCount = serial.BytesToRead;
byte[] _byte = new byte[byteCount];
int x = serial.Read(_byte, 0, byteCount);
this.txtReceive.Text = Encoding.Default.GetString(_byte);
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
}
private void btnSend_Click(object sender, EventArgs e)
{
SendData();
}
private void btnReceice_Click(object sender, EventArgs e)
{
//开启接收数据线程
ReceiveData(serialPort);
}
public void SerialPortClosed(object sender,FormClosedEventArgs e)
{
serialPort.Close();
}
}
}
运行本程序需要
1、虚拟串口软件VSPE,下载地址:http://ishare.iask.sina.com.cn/f/19781685.html
2、串口调试助手。 下载地址:http://www.duote.com/soft/3360.html