本程序一定要添加MicroSoft.VisuanlBasic.dll的引用这样才能利用My命名空间中的SerialPort类, 这样才能利用串行端口进行首发数据,利用Open函数打开串口,利用WriteLine函数写数据,利用ReadLine函数读数据。
源代码如下:
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;
//一定要添加MicroSoft.VisuanlBasic.dll
using Microsoft.VisualBasic.Devices;
using System.IO.Ports;
namespace Port
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
// this.btnReceive.Visible = false;
// this.btnSend.Visible = false;
}
private void btnGetNames_Click(object sender, EventArgs e)
{
clPorts.Items.Clear();
Computer myComputer = new Computer();
foreach (string item in myComputer.Ports.SerialPortNames)
{
clPorts.Items.Add(item,true);
}
if (clPorts.Items.Count > 0)
{
this.btnSend.Visible = true;
this.btnReceive.Visible = true;
}
}
private void btnSend_Click(object sender, EventArgs e)
{
Computer myComputer = new Computer();
for (int i = 0; i < clPorts.Items.Count-1; i++)
{
if (clPorts.GetItemChecked(i))
{
try
{
SerialPort myComport;
/*
using (myComport = myComputer.Ports.OpenSerialPort(clPorts.Items[i].ToString()))
{
myComport.WriteLine(this.textBox1.Text.Trim());
}
*/
using(myComport=new SerialPort(clPorts.Items[i].ToString()))
{
myComport.Open();
myComport.WriteLine(textBox1.Text.Trim());
}
}
catch (Exception err)
{
MessageBox.Show(err.Message);
}
}
}
}
private void btnReceive_Click(object sender, EventArgs e)
{
string returnStr = "";
Computer myComputer = new Computer();
for (int i = 0; i < clPorts.Items.Count-1; i++)
{
if (clPorts.GetItemChecked(i))
{
try
{
SerialPort myComport;
// using (myComport = myComputer.Ports.OpenSerialPort(clPorts.Items[i].ToString()))
// {
// myComport.ReadTimeout = 1000;
using(myComport=new SerialPort(clPorts.Items[i].ToString()))
{
myComport.Open();
do
{
try
{
string incoming = myComport.ReadLine();
if (incoming == null)
{
break;
}
else
{
returnStr += incoming + Environment.NewLine;
}
}
catch (Exception err)
{
MessageBox.Show(err.Message);
}
} while (true);
}
}
catch (Exception err)
{
MessageBox.Show(err.Message);
}
}
}
this.textBox1.Text = returnStr;
}
}
}