我们的开发环境假定为vs2005(虽然我在用vs2010,但避免有些网友用2005,不支持lambda,避免不兼容,就用2005来做例子)
一个基本的串口程序先画出界面。例如:
这里,波特率就定死几种好了。直接界面上添加2400,4800,9600,19200,38400,57600,115200
comboPortName这里,为了我们的软件能通用所有电脑避免每次查询的效率损失,我们使用微软提供的枚举方式,代码如下:
- string[]
ports = SerialPort.GetPortNames(); - Array.Sort(ports);
- comboPortName.Items.AddRange(ports);
显然,我们需要定义一个SerialPort对象。添加DataReceived事件响应收到数据,还有一个重点,我们需要记得设置NewLine属性哦。好想有的版本不设置的时候,WriteLine和Write效果一样。
所以,我们需要初始化SerialPort对象,例如:
- //初始化SerialPort对象
- comm.NewLine
= "/r/n"; - comm.RtsEnable
= true;//根据实际情况吧。 - //添加事件注册
- comm.DataReceived
+= comm_DataReceived;
- 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.Text.RegularExpressions; - namespace
SerialportSample - {
-
public partial classSerialportSampleForm : Form -
{ -
private SerialPort newcomm = SerialPort(); -
private StringBuilder newbuilder = StringBuilder(); //避免在事件处理方法中反复的创建,定义到外面。 -
private