关于serialport的简单串口通信

         由于在平时的开发工作,对数据的来源接触最多的是来自于数据库,文本,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;
        } 

简单的串口通信完成。

原来很简单,在此基础上可以加罗辑语句,将数据采集入库,或是做时时的显示。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值