C#串口数据互通小程序
主要功能:
所编写的程序需将串口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#串口数据互通小程序的更多相关文章
- fillder抓取APP数据之小程序
1.下载fillder ,fillder官网:https://www.telerik.com/fiddler 2.安装好后设置fillder: 工具—>选项,打开设置面板.选择HTTPS选项卡. ...
- 小程序二层嵌套循环数据:微信小程序开发(交流QQ群:604788754)
WXML: <view class="martop15"> <view class="titlebox"> .二层嵌套循环 </v ...
- 微信小程序要调数据 微信小程序 for 循环详解
现在要完成这样的效果: 我的代码是: <view class="l-setlist clr" > <template name="listab" ...
- 腾讯技术分享:微信小程序音视频与WebRTC互通的技术思路和实践
1.概述 本文来自腾讯视频云终端技术总监rexchang(常青)技术分享,内容分别介绍了微信小程序视音视频和WebRTC的技术特征.差异等,并针对两者的技术差异分享和总结了微信小程序视音视频和WebR ...
- 微信小程序结合后台数据管理实现商品数据的动态展示、维护
微信小程序给我们提供了一个很好的开发平台,可以用于展现各种数据和实现丰富的功能,本篇随笔介绍微信小程序结合后台数据管理实现商品数据的动态展示.维护,介绍如何实现商品数据在后台管理系统中的维护管理,并通 ...
- Hybrid小程序混合开发之路 - 数据交互
HTML+CSS是历史悠久.超高自由度.控制精准.表现能力极强.编码简单.学习门槛超低.真跨平台的一种UI界面开发方式. 本文介绍的是微信小程序和H5混合开发的一种数据交互方式. 很多应用在原生界面中 ...
- 微信小程序开发:学习笔记[9]——本地数据缓存
微信小程序开发:学习笔记[9]——本地数据缓存 快速开始 说明 本地数据缓存是小程序存储在当前设备上硬盘上的数据,本地数据缓存有非常多的用途,我们可以利用本地数据缓存来存储用户在小程序上产生的操作,在 ...
- Lazy freeing of keys 对数据的额异步 同步操作 Redis 4.0 微信小程序
https://github.com/antirez/redis/blob/4.0-rc1/00-RELEASENOTES 数据缓存 · 小程序 https://developers.weixin.q ...
- 微信小程序——动态修改页面数据(和样式)及参数传递
1.1.1动态修改页面数据 在小程序中我们经常要动态渲染数据,对于新手而言我们常常遇到修改的数据在控制台显示和页面显示不一致,因为我们用“=”修改数据的,这种是可以修改,但无法改变页面的状态的,还会造 ...
随机推荐
- jaegeropentracing的Java-client完整分布式追踪链
jaegeropentracing的Java-client完整分布式追踪链,在分布式系统中透传trace信息 之前文章记录了jaegeropentracing的Java-client追踪链在单系统中的 ...
- .net core 2.0的一次奇特经历
环境:.net core SDK版本 2.0.0-preview1-005977 VS 2017 version 15.3.0 preview 3.0 问题描述:今天在迁移Job的项目中,中午吃饭的时 ...
- PHP - 请求阻塞,Session写阻塞
之前写某些代码的时候,发现用户莫名奇妙地阻塞了,而且这种阻塞的情况还比较难以形容: 使用session过程中,在开启session后,同一浏览器,执行同一程序,不同页面会被锁.不同浏览器不会出现这种情 ...
- 大神的---解决tomcat内存溢出问题----tomcat报错:This is very likely to create a memory leak问题解决
tomcat memory leak解决方案 这种问题在开发中经常会碰到的,看看前辈的总结经验 Tomcat内存溢出的原因 在生产环境中tomcat内存设置不好很容易出现内存溢出.造成内存溢出是不一 ...
- 数据库执行的时候报ORA-01653错误
查明原因是因为表空间文件到达了32G,因为oracle11g单个表空间大于32G的时候就不会自动在扩展了于是需要增加新的表空间文件,下面是4种解决此问题的方法 Meathod1:给表空间增加数据文件 ...
- ubuntu下面板上无网络连接的图标
解决方法:删除旧的网络配置,重新让networkManager自动配置 sudo service network-manager stop sudo rm /var/lib/NetworkManage ...
- input子系统分析之三:驱动模块
内核版本:3.9.5 本节将以even handler来分析设备的注册和打开的过程,分析之前不妨回顾一下上节介绍的数据结构. 结合前两节分析可知,input子系统分为3层,最上一层是event han ...
- sqlserver for xml
FOR XML子句有四种最基本的模式 1.AUTO模式:返回数据表为起表名的元素,每一列的值返回为属性:2.RAW模式:返回数据行为元素,每一列的值作为元素的属性: 3.PATH模式:通过简单的XPa ...
- Spark之 RDD转换成DataFrame的Scala实现
依赖 <dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-sql_2. ...
- 刷题向》关于一道比较优秀的递推型DP(openjudge9275)(EASY+)
先甩出传送门:http://noi.openjudge.cn/ch0206/9275/ 这道题比较经典, 最好不要看题解!!!!! 当然,如果你执意要看我也没有办法 首先,显然的我们可以用 f [ i ...