C sharp串口程序源码

2019-03-16 18:51

TestSerialPort1.cs文件内容: 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 TestSerialPort1

{

public partial class TestSerialPort1 : Form

{

public bool sendRts = false;

public System.Threading.Thread sendDataThread; //public System.Threading.Thread receiveDataThread; SerialPort serialPort1 = new SerialPort(); private long TxBytes = 0; private long RxBytes = 0;

public TestSerialPort1() {

InitializeComponent();

this.serialPort1.DataReceived += System.IO.Ports.SerialDataReceivedEventHandler(this.datainport); Control.CheckForIllegalCrossThreadCalls = false; }

private void TestSerialPort1_Load(object sender, EventArgs e) {

foreach (string PortName in SerialPort.GetPortNames()) {

PortNamesCbB.Items.Add(PortName); } }

private void PortNamesCbB_SelectedIndexChanged(object sender, EventArgs e) {

new

if (serialPort1.IsOpen)

{

serialPort1.Close();

SetSerialPort(serialPort1); OpenSerialPort(serialPort1); } }

private void OpenSerialPortBtn_Click(object sender, EventArgs e) {

if (!serialPort1.IsOpen) {

BaudrateCbB.Enabled = false; ParityCbB.Enabled = false; DataBitsCbB.Enabled = false; StopBitsCbB.Enabled = false; AutoSendChk.Enabled = true; SetSerialPort(serialPort1); OpenSerialPort(serialPort1); } else

{

serialPort1.Close();

OpenSerialPortBtn.Text = \打开串口\ AutoSendChk.Enabled = false; BaudrateCbB.Enabled = true; ParityCbB.Enabled = true; DataBitsCbB.Enabled = true; StopBitsCbB.Enabled = true; }

}

private void SetSerialPort(SerialPort serialPortset) //设置串口参数 {

serialPort1.PortName = PortNamesCbB.Text; serialPort1.BaudRate = Convert.ToInt32(BaudrateCbB.Text); switch (ParityCbB.Text) {

case \

serialPort1.Parity = Parity.None; break; case \

serialPort1.Parity = Parity.Odd; break; case \

serialPort1.Parity = Parity.Even; break; case \

serialPort1.Parity = Parity.Mark; break;

case \

serialPort1.Parity = Parity.Space; break; }

//serialPort1.StopBits = StopBits.One; switch (StopBitsCbB.Text) {

case \

serialPort1.StopBits = StopBits.None; break; case \

serialPort1.StopBits = StopBits.One; break; case \

serialPort1.StopBits = StopBits.OnePointFive; break;

case \

serialPort1.StopBits = StopBits.Two; break; }

serialPort1.DataBits = Convert.ToInt32(DataBitsCbB.Text); }

private void SendBtn_Click(object sender, EventArgs e) {

SendData(serialPort1); }

private void SendData(SerialPort serialPort) {

sendDataThread = new ParameterizedThreadStart(this.SendStringData)); sendDataThread.Start(serialPort); while (!sendDataThread.IsAlive) {

Thread.Sleep(5); }

}

private void OpenSerialPort(SerialPort serialPortToOpen)

Thread(new

{

try {

serialPortToOpen.Open();

serialPort1.Encoding = Encoding.GetEncoding(-0); OpenSerialPortBtn.Text = \关闭串口\ } catch {

MessageBox.Show(serialPort1.PortName + \can not be opened! Please try another !\ serialPortToOpen.Close(); } }

private void TryToSendData(SerialPort serialPortTry, string strToSend) {

try {

serialPortTry.Write(strToSend); } catch

{

MessageBox.Show(\serial MessageBoxButtons.OK, MessageBoxIcon.Error); }

port

has

be

opened!\

\

}

private void SendStringData(object serialPort) {

SerialPort serialPort2 = (SerialPort)serialPort; ASCIIEncoding strData = new ASCIIEncoding(); //while (AutoSendChk.Checked) //{

byte[] strBytes = strData.GetBytes(SendBox.Text); if (HexSendChk.Checked)

{

for (int i = 0; i < strBytes.Length; i++) {

TryToSendData(serialPort1, strBytes[i].ToString()); }

}

else {

TryToSendData(serialPort1, SendBox.Text);

}

TxBytes += SendBox.Text.Length; TxCount.Text = TxBytes.ToString(); }

private void datainport(object sender, SerialDataReceivedEventArgs e) {

serialPort1.Encoding = Encoding.GetEncoding(-0); string inputdata = serialPort1.ReadExisting(); RxBytes += inputdata.Length; RxCount.Text = RxBytes.ToString();

ASCIIEncoding strData = new ASCIIEncoding(); byte[] strBytes = strData.GetBytes(inputdata);

if ((inputdata != String.Empty)&&(StopDisplayBtn.Text == \停止显示\ {

if (HexDisplayChk.Checked)

{

for(int i = 0; i < strBytes.Length; i++)

{

ReceiveBox.Text = ReceiveBox.Text + strBytes[i].ToString() + \ }

} else

{

ReceiveBox.Text = ReceiveBox.Text + inputdata; } } }

private void ClrRxBoxBtn_Click(object sender, EventArgs e) {

ReceiveBox.Clear(); }

private void ClrBtn_Click(object sender, EventArgs e) {

RxCount.Text = \ RxBytes = 0;

TxCount.Text = \ TxBytes = 0;


C sharp串口程序源码.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:省青联十届二次常委会讲话(录音整理稿)

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: