当前位置: 首页 > article >正文

C#实现串口中继

前一段时间为了测试硬件产品,发现,串口转发不太方便,于是自己写了一个简单的串口中继小程序,是基于C#开发的,可以将两个串口互通,方便自己在程序的使用,目前看起来应用还可以,现在把源码放这里,供大家参考。

串口使用的是C#提供的控件,直接拖动的控件,实现了相关的事件,界面如图:

核心代码也很简单


        private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)
        {
            Thread.Sleep(200);
            byte[] byteRead = new byte[serialPort1.BytesToRead];
            serialPort1.Read(byteRead, 0, byteRead.Length);
            setText1( "接收数据:" + ToHexStrFromByte(byteRead));
            if (serialPort2.IsOpen == true)
            {
                serialPort2.Write(byteRead, 0, byteRead.Length);
                setText2( "发送数据:" + ToHexStrFromByte(byteRead));
            }
        }

        private void serialPort2_DataReceived(object sender, SerialDataReceivedEventArgs e)
        {
            Thread.Sleep(200);
            byte[] byteRead = new byte[serialPort2.BytesToRead];
            serialPort2.Read(byteRead, 0, byteRead.Length);
            setText2( "接收数据:" + ToHexStrFromByte(byteRead));
            if (serialPort1.IsOpen == true)
            {
                serialPort1.Write(byteRead, 0, byteRead.Length);
                setText1("发送数据:" + ToHexStrFromByte(byteRead));
            }
        }

为了打印使用的一个小函数:


        /// <summary>
        /// 字节数组转16进制字符串:空格分隔
        /// </summary>
        /// <param name="byteDatas"></param>
        /// <returns></returns>
        public string ToHexStrFromByte(byte[] byteDatas)
        {
            StringBuilder builder = new StringBuilder();
            for (int i = 0; i < byteDatas.Length; i++)
            {
                builder.Append(string.Format("{0:X2} ", byteDatas[i]));
            }
            return builder.ToString().Trim();
        }


http://www.kler.cn/a/305227.html

相关文章:

  • docker镜像源,亲测可用,时间2024-11-14
  • 在linux中使用nload实时查看网卡流量
  • Jmeter基础篇(22)服务器性能监测工具Nmon的使用
  • 时序数据库TimescaleDB安装部署以及常见使用
  • 深入探讨 MySQL 配置与优化:从零到生产环境的最佳实践20241112
  • SpringBoot(八)使用AES库对字符串进行加密解密
  • 不废话简单易懂的Selenium 页面操作与切换
  • Python实现一个简单的爬虫程序(爬取图片)
  • postgresql 导出CSV格式数据
  • 电脑连手机热点,上不了网
  • CSS 响应式设计(补充)——WEB开发系列36
  • [数据集][图像分类]痤疮严重程度分级分类数据集999张3类别
  • QT学习第五天
  • mysql workbench 如何访问远程数据库
  • 快手手撕 力扣2487 从链表中移除节点 单调栈 递归
  • HTTP 请求方式`application/x-www-form-urlencoded` 与 `application/json` 怎么用?有什么区别?
  • C++编译环境(IDE)推荐及安装
  • 美国硅谷大带宽服务器带宽堵塞解决方案
  • Oracle发邮件功能:设置的步骤与注意事项?
  • 【Oracle】TIMESTAMP类型时间计算时间差
  • SprinBoot+Vue宠物共享平台的设计与实现
  • 性能诊断的方法(五):架构和业务诊断
  • 前端下载word、excel文件的两种方法
  • [数据集汇总]智慧交通-铁路相关数据集汇总
  • dedecms靶场(四种webshell姿势)
  • JMeter 入门之远程启动,服务模式,多机联测,负载均衡测试