zoukankan      html  css  js  c++  java
  • 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加上去了,不然又出错了。

  • 相关阅读:
    二维动态规划(2)
    细节是否真的打败爱情,十年后你还会爱我吗?
    C++的四种cast操作符的区别类型转换
    纯虚函数
    二维动态规划
    1,2,...n n个数m个丢失,找出丢失的数
    虚拟内存管理技术
    C++ 面试题总结
    【转】图的邻接链表 adjacent list of graph
    CIOCPServer的数据结构定义及内存池方案
  • 原文地址:https://www.cnblogs.com/janeaiai/p/4897605.html
Copyright © 2011-2022 走看看