关于串口通信,之前用MFC架构的时候做过一次,也写了文章如下:
MFC RS232串口通信
最近的项目因为对于界面的美化要求高了很多,用MFC架构去美化界面是件要命的事,因此转而用了WPF架构。其中用到的串口通信部分自然也就只能重新研究下了。关于虚拟串口的工具还有串口调试工具,则用的还是原来MFC相关文章所提供的那两个,有需要的可以去那篇文章的下载链接中下载。
稍微研究了WPF架构的串口实现,万万没想到比MFC容易了不只一个数量级,简直就是直接拿来应用,无需费多少工夫,因此只是将实现的代码贴出来给大家参考:
public SerialPort serialPort;//串口对象类
public MainWindow()
{
InitializeComponent();
if (InitCOM("COM3"))
{
SendCommand("asdasdasd");//发送字符
}
}
/// 串口接收通信配置方法
/// 端口名称
public bool InitCOM(string PortName)
{
serialPort = new SerialPort(PortName, 9600, Parity.None, 8, StopBits.One);
serialPort.DataReceived += new SerialDataReceivedEventHandler(serialPort_DataReceived);//DataReceived事件委托
serialPort.ReceivedBytesThreshold = 1;
serialPort.RtsEnable = true;
return OpenPort();//串口打开
}
/// 数据接收事件
private void serialPort_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
// Thread.Sleep(2000);
byte[] readBuffer = new byte[serialPort.ReadBufferSize];
serialPort.Read(readBuffer, 0, readBuffer.Length);
string str = System.Text.Encoding.Default.GetString(readBuffer);
MessageBox.Show(str);
}
//打开串口的方法
public bool OpenPort()
{
try//这里写成异常处理的形式以免串口打不开程序崩溃
{
serialPort.Open();
}
catch { }
if (serialPort.IsOpen)
{
return true;
}
else
{
MessageBox.Show("串口打开失败!");
return false;
}
}
//向串口发送数据
public void SendCommand(string CommandString)
{
byte[] WriteBuffer = Encoding.ASCII.GetBytes(CommandString);
serialPort.Write(WriteBuffer, 0, WriteBuffer.Length);
}