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动态修改页面数据 在小程序中我们经常要动态渲染数据,对于新手而言我们常常遇到修改的数据在控制台显示和页面显示不一致,因为我们用“=”修改数据的,这种是可以修改,但无法改变页面的状态的,还会造 ...
随机推荐
- leetcode168
public class Solution { private string Convert(int k) { var s = ""; switch (k) { : s = &qu ...
- Spring技术内幕之Spring Data JPA-自定义Repository实现
1.自定义Repository方法接口,让接口的实现类来继承这个中间接口而不是Repository接口 package com.data.jpa.dao; import java.io.Seriali ...
- android游戏的增量更新(资源及代码的热更新)
需求当游戏需要更新时,不必让用户下载新的完整包,只需要通过游戏内部的更新系统自动更新差异包,达到节约用户流量和时间的目的. 大体思路:1.(游戏逻辑用lua等脚本编写的情况)这种方式的增量更新非常简单 ...
- 前端开发之CSS入门篇
一.CSS介绍和语法 二.CSS引入方式 三.基本选择器 四.高级选择器 五.伪类选择器 六.伪元素选择器 1️⃣ CSS介绍和语法 1. CSS的介绍 (1)为什么需要CSS? 使用css的目的就 ...
- redis cluster test
cp /test/tests/redis.conf /etc redis-server /etc/redis.conf redis-trib.rb create --replicas 1 172.17 ...
- JavaScript怎么让字符串和JSON相互转化
var obj = str.parseJSON(); //由JSON字符串转换为JSON对象 var obj = JSON.parse(str); //由JSON字符串转换为JSON对象
- 第十一条理解objc_masgSend的作用
Objetive-C最基本的的东西就是它的消息机制.Objective-C运行时的最基本的东西就是 objc_msgSend, 它就是负责发送一个消息给对象的C函数. 当你写下面这样的代码时: ...
- ios加载本地html
UIWebView加载工程本地网页与本地图片 - (void)viewDidLoad { [super viewDidLoad]; NSString *filePath = [[NSBundle ma ...
- Java-随机数工具类
import java.util.Random; import java.util.concurrent.ThreadLocalRandom; import org.apache.commons.la ...
- CentOS压力测试工具Tsung安装和图形报表生成Tsung安装配置
Tsung 是一个压力测试工具,可以测试包括HTTP, WebDAV, PostgreSQL, MySQL, LDAP, and XMPP/Jabber等服务器.针对 HTTP 测试,Tsung 支持 ...