主要功能:

所编写的程序需将串口1、串口2数据互通,即:串口1接收到数据的同时将数据通过串口2发出,串口2接收到数据的同时将数据通过串口1发出。

并根据需要由指定串口发送或获取数据。

代码如下:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO.Ports; namespace 串口互通
{
public partial class Form1 : Form
{
private SerialPort comm4 = new SerialPort("COM4", 115200, Parity.None, 8, StopBits.One);//因为我测试设备采用的是COM4和COM5两个串口,所以就直接在上面定义了
private SerialPort comm5 = new SerialPort("COM5", 115200, Parity.None, 8, StopBits.One);
private StringBuilder builder = new StringBuilder();//避免在事件处理方法中反复的创建,定义到外面
byte[] buf1 = new byte[9] {90, 165, 6, 131, 0, 0, 1, 0, 2};//向串口下发的指令,在实际情况中是设备启动报文
byte[] buf2 = new byte[9] {90, 165, 6, 131, 0, 0, 1, 0, 1};//设备停止报文
public Form1()
{
InitializeComponent();
}
//打开串口按钮
private void button1_Click(object sender, EventArgs e)
{ comm4.Open();
comm5.Open();
button1.Enabled=false;
button2.Enabled=true;
}
//绑定方法到数据接收事件
private void Form1_Load(object sender, EventArgs e)
{
comm4.DataReceived+=comm4_DataReceived;
comm5.DataReceived+=comm5_DataReceived;
}
//com5口接收到的数据从com4口发出
private void comm5_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
int n = comm5.BytesToRead;
byte[] buf = new byte[n];//声明一个临时数组存储当前来的串口数据
comm5.Read(buf, 0, n);//读取缓冲数据
builder.Clear();//清除字符串构造器的内容
comm4.Write(buf, 0, buf.Length);//数据从com4口发出
}
//com4接收到的数据从com5口发出
private void comm4_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
int n = comm4.BytesToRead;
byte[] buf = new byte[n];//声明一个临时数组存储当前来的串口数据
comm4.Read(buf, 0, n);//读取缓冲数据
builder.Clear();//清除字符串构造器的内容
comm5.Write(buf, 0, buf.Length);//数据从com5口发出
}
//关闭串口按钮
private void button2_Click(object sender, EventArgs e)
{ comm4.Close();
comm5.Close();
button2.Enabled=false;
button1.Enabled=true;
}
//设备启动
private void button3_Click(object sender, EventArgs e)
{
comm5.Write(buf1, 0, buf1.Length);
}
//设备停止
private void button4_Click(object sender, EventArgs e)
{
comm5.Write(buf2, 0, buf2.Length);
}
}
}

C#串口数据互通小程序的更多相关文章

  1. fillder抓取APP数据之小程序

    1.下载fillder ,fillder官网:https://www.telerik.com/fiddler 2.安装好后设置fillder: 工具—>选项,打开设置面板.选择HTTPS选项卡. ...

  2. 小程序二层嵌套循环数据:微信小程序开发(交流QQ群:604788754)

    WXML: <view class="martop15"> <view class="titlebox"> .二层嵌套循环 </v ...

  3. 微信小程序要调数据 微信小程序 for 循环详解

    现在要完成这样的效果: 我的代码是: <view class="l-setlist clr" > <template name="listab" ...

  4. 腾讯技术分享:微信小程序音视频与WebRTC互通的技术思路和实践

    1.概述 本文来自腾讯视频云终端技术总监rexchang(常青)技术分享,内容分别介绍了微信小程序视音视频和WebRTC的技术特征.差异等,并针对两者的技术差异分享和总结了微信小程序视音视频和WebR ...

  5. 微信小程序结合后台数据管理实现商品数据的动态展示、维护

    微信小程序给我们提供了一个很好的开发平台,可以用于展现各种数据和实现丰富的功能,本篇随笔介绍微信小程序结合后台数据管理实现商品数据的动态展示.维护,介绍如何实现商品数据在后台管理系统中的维护管理,并通 ...

  6. Hybrid小程序混合开发之路 - 数据交互

    HTML+CSS是历史悠久.超高自由度.控制精准.表现能力极强.编码简单.学习门槛超低.真跨平台的一种UI界面开发方式. 本文介绍的是微信小程序和H5混合开发的一种数据交互方式. 很多应用在原生界面中 ...

  7. 微信小程序开发:学习笔记[9]——本地数据缓存

    微信小程序开发:学习笔记[9]——本地数据缓存 快速开始 说明 本地数据缓存是小程序存储在当前设备上硬盘上的数据,本地数据缓存有非常多的用途,我们可以利用本地数据缓存来存储用户在小程序上产生的操作,在 ...

  8. Lazy freeing of keys 对数据的额异步 同步操作 Redis 4.0 微信小程序

    https://github.com/antirez/redis/blob/4.0-rc1/00-RELEASENOTES 数据缓存 · 小程序 https://developers.weixin.q ...

  9. 微信小程序——动态修改页面数据(和样式)及参数传递

    1.1.1动态修改页面数据 在小程序中我们经常要动态渲染数据,对于新手而言我们常常遇到修改的数据在控制台显示和页面显示不一致,因为我们用“=”修改数据的,这种是可以修改,但无法改变页面的状态的,还会造 ...

随机推荐

  1. 「小程序JAVA实战」小程序注册与后端联调(35)

    转自:https://idig8.com/2018/09/01/xiaochengxujavashizhanxiaochengxuzhuceyuhouduanliandiao35/ 小程序的后端spr ...

  2. ListView 中 的 分页

     Django Pagination 简单分页 当博客上发布的文章越来越多时,通常需要进行分页显示,以免所有的文章都堆积在一个页面,影响用户体验.Django 内置的 Pagination 能够帮助我 ...

  3. Python基础学习八 写日志

    import logging from logging import handlers class Logger(object): level_relations = { 'debug': loggi ...

  4. LUA使用虚函数与使用回调函数

    ------------------虚函数overload-------------------------- --回调:寻路中格子坐标改变 CHero.OnSearchToCellsChange = ...

  5. Caused by: java.lang.ClassNotFoundException: com.opensymphony.xwork2.util.classloader.ReloadingClassLoader

    今天学习到strusts2与spring的整合,把原来可以交给spring产生的东西都扔给了它,终于拜托了繁琐的代码,只专心于逻辑开发就OK了,现在连strusts的action都可以交给spring ...

  6. 前端开发之JavaScript HTML DOM理论篇二

    主要内容: 1.HTML DOM元素 2.HTML DOM事件 一.DOM元素 主要操作有添加.删除和替换HTML元素 1.创建新的HTML元素  (1)方法一: appendChild() 追加 如 ...

  7. 一张图片优化5k带来的带宽成本及其前端页面的优化方法

    上周,我参加了公司的一门课程<网站性能优化>,讲师提出了一个问题:一张图片优化后减少5K,1年内可以大概省下多少宽带成本呢?非常好奇,仔细听完讲师分析,计算出来的数据让小伙伴们都惊呆了,仅 ...

  8. java动态规划导弹问题

    这是一道动态规划题,和昨天的取硬币还有最长公共字串有点类似. 1.题目描述:                        某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统.但是这种导弹拦截系统有一 ...

  9. Python 生成MYSQL inser语句

    背景: 一般来说,navicat生成的insert已经够用了 如果说一张表有2,30个字段,每个字段还得一一对上,其实是很难的.所以抽空写了个小程序.用它完全不用担心字段对不上了.因为没有时间,需要手 ...

  10. 监控windows

    一.zabbix server和zabbix agent(windows)的地址说明 zabbix server的ip为:192.168.1.106 zabbix agent的ip为:192.168. ...