由于在平时的开发工作,对数据的来源接触最多的是来自于数据库,文本,excel,或是引用相关的数据接口api(rest),webservice.由于工作的惯性,每调数据只想到这几方面的数据来源。近偶发想调用来自硬件的数据,或是来自于TCP的数据。
近一天的停网,给我提供了来实现这一想法的时间。没有网络无法做与网络有关的工作。那就做与我本机有关的操作吧:)本人还是很爱学习的,可以说编程不只是一件工作,也是一爱好。如何把爱好付注于实际应用可以说是我的追求。
做为一个编程爱好者,还是眼界开阔些的好,不能每天把自己局限于那一平米多的狭小空间里,但这是多么的矛盾,当你真的离开了这一米多的空间,你又能在哪儿将其付注于实际应用?一点一滴的积累是必须的。动静的均衡是我一直想要的状态。
言归正传:
C# 中的serialport是个不错的组件,而且网上对此组件的介绍很多。那么我用什么来做串口呢,我在用虚机做开发。以前在别的项目中接触过虚拟串口,当时也只是会用而已,并没有想在虚拟串口上做些什么。现在竟派上的用场 .虚两串口。
随便找了一个serialport的应用实例 :
1.照猫划虎的写了发送和接收的代码,F5测试报错,端口没有权限操作,一查是因为已open,看来要添加一些条件:
if(!spSend.IsOpen) spSend.open();
关闭Form时,form_closed(){spSend.close()}这样确保程序运行完毕后,关才所有打开的串口。
2.对serialport的发送接收的思路:
private delegate void HandleInterfaceUpdateDelegate(string text);
private HandleInterfaceUpdateDelegate interfaceUpdateHandle;
发送信息:
byte[] w = Encoding.UTF8.GetBytes(txtSend.Text);
spSend.Write(w, 0, w.Length);
接收信息:
public void spReceive_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
interfaceUpdateHandle = new HandleInterfaceUpdateDelegate(UpdateTextBox);
byte[] readBuffer =new byte[spReceive.ReadBufferSize];
spReceive.Read(readBuffer, 0, readBuffer.Length);
this.Invoke(interfaceUpdateHandle,Encoding.UTF8.GetString(readBuffer));
}
private void UpdateTextBox(string text)
{
txtReceive.Text = text;
}
简单的串口通信完成。
原来很简单,在此基础上可以加罗辑语句,将数据采集入库,或是做时时的显示。