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动态修改页面数据 在小程序中我们经常要动态渲染数据,对于新手而言我们常常遇到修改的数据在控制台显示和页面显示不一致,因为我们用“=”修改数据的,这种是可以修改,但无法改变页面的状态的,还会造 ...
随机推荐
- C# 本地文件夹上传至网络服务器中(待续)
一.文件的上传参考 思想,C#FTP上传 /// <summary> /// 上传 /// </summary> /// <param name="filena ...
- [转] 实现winfrom进度条及进度信息提示,winfrom程序假死处理
china_xuhua 原文地址 1.方法一:使用线程 功能描述:在用c#做WinFrom开发的过程中.我们经常需要用到进度条(ProgressBar)用于显示进度信息.这时候我们可能就需要用到多线 ...
- leetcode686
/* 上来的想法是KMP的思想,但是具体不会KMP的实现,c++STL的string 中的find?但是要注意A的长度与B的长度的问题,首先A的长度要大于B的长度 分为三个阶段: 1. A比B的长度要 ...
- views获取数据 -- request包含的方法
request.GET request.POST request.FILES request.path_info request.xxx.getlist request.method request. ...
- Android自定义view与activity的传值
昨晚在写团队项目的时候,遇到一个问题,直到今天早上才解决...即在自定义view"转盘"结束转动后获取结果的处理中,我是想吧值传到activity中的一个textview中的,但我 ...
- JAVA 定时器的三种方法
/** * 普通thread * 这是最常见的,创建一个thread,然后让它在while循环里一直运行着, * 通过sleep方法来达到定时任务的效果.这样可以快速简单的实现,代码如下: * @au ...
- 4.3.1 ThreadLoacl简单使用
我们都知道 SimpleDateFormat 这个类是线程 不安全的,那么我下面的程序执行就会遇到问题 public class ParseDateDemo { private static fin ...
- 对SOA架构思想的一些说明(转)
出处:http://kb.cnblogs.com/page/510698/ 从纵向到横向 传统业务系统的构建更多的是竖井式的纵向思想,这个主要是从单个业务系统孤立来看都是垂直应用.那么SOA架构的视角 ...
- exp,expdb,imp,impdb的使用
1.使用expdp要先在数据库中创建directory,并给相应的用户read,write权限. SQL>create dexp和empdp的区别irectory dmpdir as ‘/u01 ...
- C++11新特性之auto
auto的使用 c++11引入了auto类型说明符,auto让编译器通过初始值来推算变量的类型,所以auto定义的变量必须有初始值. 使用auto也能在一条语句中声明多个变量,因为一条声明语句只能 ...