C#的串口编程
C#的串口编程
对于串口编程,熟悉的应该觉得不困难。.NET下就更容易了,废话也没了。开始吧。
1.虚拟串口软件
由于手上没有串口硬件,所以在网上找了一个 VSPM 虚拟串口软件 ,据说是免费的。
下载地址:http://www.skycn.com/soft/30517.html
刚开始也不知道怎么用,摸索了一下,终于成功。
安装以后工作模式选择应该为:VSPM运行在Server模式,支持Client模式设备
然后是使用设备探测器简历虚拟串口。(如果选择 建立默认的串口,软件就会自动帮你建立四个虚拟串口的)
之后就是新增虚拟串口
串口选COM2,选择监听的IP地址:192.168.1.111 ,Client模式的设备尝试连接此端口:8099
建立之后:选择此串口,再选择菜单栏:检查此设备连接,输入刚才新增时候选择的IP地址:192.168.1.111,刚才选择的端口:8099
点击重新连接,这个窗口没有什么反映:但是主窗口的串口最右边一栏:最后一次操作:显示串口:COM2没有打开。
2. .NET串口操作
由于显示:串口:COM2没有打开,所以我们要先打开串口,才能用那个虚拟软件连接它(一开始我也没有注意到,弄了几小时)。
添加引用:Microsoft.VisualBasic
用以下遍历SerialPortNames,获得所有的串口
Microsoft.VisualBasic.Devices.Computer pc = new Microsoft.VisualBasic.Devices.Computer();
foreach (string s in pc.Ports.SerialPortNames)
{
this.comboBox1.Items.Add(s);
}
然后对应显示的串口名称comName,获取操作对象。就可以对这个串口进行打开了:
System.IO.Ports.SerialPort com = new System.IO.Ports.SerialPort(comName);
com.Open();
打开后就可以用虚拟的那个软件进行连接了,用以下的发送信息,虚拟软件就可以收到了。
向串口发送数据:
com.WriteLine(this.textBox1.Text);
当然也可以接受数据:
com.ReadLine()
这里是接收一行数据,需要在虚拟软件输入后按回车(那个管理界面输入就是了,没有回显的,打后回车就是了)。
其他操作自行参透,或参考以下关键词:The My Namespace in VB.NET ,C#中如何使用VB.NET的My关键字
当然最后就是关闭了:
com.Close();
虚拟串口软件和测试操作如图所示:
上次的C#的串口编程没有写这个,这次补充上去,就比较完整了。开始自己写写也不太会用事件来读取串口传来的信息:就想着用另外的线程来读取,用事件轻松挺多了。
直接点的代码
serialPort1.DataReceived += new System.IO.Ports.SerialDataReceivedEventHandler(serialPort1_DataReceived); //对你的serialPort1 注册一个事件委托 public void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e) {
this.textBox2.Invoke(new MethodInvoker(delegate(){ textBox2.AppendText(serialPort1.ReadExisting());//这里用多行文本进行显示
textBox2.ScrollToCaret(); }));
}
居然忘记了,不同于ui线程的委托,把Invoke加上去了,不然又出错了。