c#串口通信类代码可以直接调用
文章首发于浩瀚先森博客
直接上代码
public struct SerialPara
{
private string portName;
public string PortNameSetGet
{
get { return portName; }
set { portName = value; }
} private int baudRate;
public int BaudRateSetGet
{
get { return baudRate; }
set { baudRate = value; }
} private Parity parity;
public Parity ParitySetGet
{
get { return parity; }
set { parity = value; }
} private int databit;
public int DatabitSetGet
{
get { return databit; }
set { databit = value; }
} private StopBits stopBits;
public StopBits StopBitsSetGet
{
get { return stopBits; }
set { stopBits = value; }
}
} public class SerialCommClass
{
SerialPara sp;
public SerialCommClass(SerialPara sp_temp)
{
this.sp = new SerialPara();
sp.PortNameSetGet = sp_temp.PortNameSetGet;
sp.BaudRateSetGet = sp_temp.BaudRateSetGet;
sp.ParitySetGet = sp_temp.ParitySetGet;
sp.DatabitSetGet = sp_temp.DatabitSetGet;
sp.StopBitsSetGet = sp_temp.StopBitsSetGet;
} public bool Serial_Connect(ref SerialPort serialPort)
{
/*check serial parameter*/
if(!checkSerialPara(this.sp))
return false; /*Serial Port configuration*/
serialPort.PortName = sp.PortNameSetGet;
serialPort.BaudRate = sp.BaudRateSetGet;
serialPort.DataBits = sp.DatabitSetGet;
serialPort.Parity = sp.ParitySetGet;
serialPort.StopBits = sp.StopBitsSetGet; try
{
serialPort.Open();
}
catch (Exception exc)
{
return false;
}
return true;
} //发送字符串数据
public bool SendStringData(ref SerialPort serialPort,string data)
{
if (serialPort.IsOpen)
{
serialPort.Write(data);
return true;
}
else
{
return false;
}
} //发送二进制数据
public string SendBytesData(ref SerialPort serialPort, string data)
{
//byte[] bytesSend = System.Text.Encoding.Default.GetBytes(data);
byte[] bytesSend = strToToHexByte(data);
if (bytesSend == null)
return null;
try
{
serialPort.Write(bytesSend, 0, bytesSend.Length);
return bytesSend.Length + "";
}
catch (Exception e)
{
return null;
}
} /*check serial parameter*/
private bool checkSerialPara(SerialPara sp)
{
if(sp.PortNameSetGet==null)
return false;
return true;
} /// <summary>
/// 字符串转16进制字节数组
/// </summary>
/// <param name="hexString"></param>
/// <returns></returns>
private static byte[] strToToHexByte(string hexString)
{
hexString = hexString.Replace(" ", "");
if (hexString.Substring(0, 2) == "0x" || hexString.Substring(0, 2) == "0X")
hexString = hexString.Substring(2, hexString.Length - 2);
byte[] returnBytes = new byte[hexString.Length / 2];
try
{
for (int i = 0; i < returnBytes.Length; i++)
returnBytes[i] = Convert.ToByte(hexString.Substring(i * 2, 2), 16);
//returnBytes[returnBytes.Length - i - 1] = Convert.ToByte(hexString.Substring(i * 2, 2), 16);
}
catch (Exception e)
{
return null;
}
return returnBytes;
}
}
c#串口通信类代码可以直接调用的更多相关文章
- 串口通信类,WPF
参考之前的资料,写了一个自己常用的串口类, 字符串发送类型用了两种方式,char[] 和byte[] : 数据接收也是采用两种 char[] 和byte[] 两种. 类代码贴出来: public cl ...
- VC 串口通信类
为了节省时间,我就贴出来吧 头文件 SerialPort.h /******************************************************************** ...
- java 串口通信 代码
下面是我自己实现的串口接收的类,串口发送比较简单,就直接发送就可以了.下面的这个类可以直接使用. package com.boomdts.weather_monitor.util; import ja ...
- C\C++串口通信编程的一点技术记录
新工作接的第一个活,要写一个配合设备调试的上位机程序. 除了MFC界面的部分,就是要处理几条命令. 串口通信部分代码借鉴的是这一篇文章:http://blog.sina.com.cn/s/blog_a ...
- boost实现串口通信(一):小试牛刀
/************************************************************************/ /* 功能:boost实现串口通信类 */ /* ...
- Qt 串口通信
在Qt5之前,串口通信基本依赖于第三方库,下面是我曾接触过的串口通信类库: 名称 语言 平台 QextSerialPort QT C++ Win/Linux http://sourceforge. ...
- Qt串口通信
1. Qt串口通信类QSerialPort 在Qt5的的更新中,新增了串口通信的相关接口类QSerialPort,这使得在开发者在使用Qt进行UI开发时,可以更加简单有效地实现串口通信的相关功能. 开 ...
- C++实现串口通信问题(与Arduino)
参考1(已验证稍加修改可与Arduino通信):https://blog.csdn.net/qq_36106219/article/details/81701368 参考2(比较全,main函数需要自 ...
- c#中实现串口通信的几种方法
c#中实现串口通信的几种方法 通常,在C#中实现串口通信,我们有四种方法: 第一:通过MSCOMM控件这是最简单的,最方便的方法.可功能上很难做到控制自如,同时这个控件并不是系统本身所带,所以还得注册 ...
随机推荐
- javascript如何设置DIV背景色为随机色
随机色有两种格式: 效果预览:http://wjf444128852.github.io/DEMOLIST/JS/test/index.html 1.rgb(xxx,xxx,xxx) 2.#xxxxx ...
- Bootstrap分为几部分?
Bootstrap分为五部分: (1)起步(Startup) (2)全局CSS样式(Global CSS) (3)组件(Component) (4)插件(Plugin) (5)定制(Customize ...
- js 模块化的一些理解和es6模块化学习
模块化 1 IIFE 2 commonjs 3 浏览器中js的模块化 4 简单理解模块加载器的原理 5 es6 之前在参加百度前端技术学院做的小题目的时候,自己写模块的时候 都是写成立即调用表达式( ...
- UML 用例图、顺序图、状态图、类图、包图、协作图、流程图
用例图.顺序图.状态图.类图.包图.协作图 面向对象的问题的处理的关键是建模问题.建模可以把在复杂世界的许多重要的细节给抽象出.许多建模工具封装了UML(也就是Unified Modeling La ...
- SQL 常识
1.varchar 与 nvarchar 的区别? varchar(n):长度为 n 个字节的可变长度且非 Unicode 的字符数据.n 必须是一个介于 1 和 8,000 之间的数值.存储大小为输 ...
- JSON解析和XML解析对比
JSON解析和XML解析是较为普遍的两种解析方式,其中JSON解析的市场分额更大.本文系统的分析两种解析方式的区别,为更好地处理数据作准备.由于目前阶段主要是做移动开发,所以本文所描述的JSON解析和 ...
- initialize和init以及load方法的区别与使用以及什么时候调用
initialize不是init initialize在这个类第一次被调用的时候比如[[class alloc]init]会调用一次initialize方法,不管创建多少次这个类,都只会调用一次这个方 ...
- Android触摸事件流程剖析
Android中的触摸事件流程就是指MotionEvent如何传递,主要包括两个阶段: onInterceptTouchEvent触摸事件拦截方法传递,从外到里传递 onTouchEvent触摸事件处 ...
- IOS网络请求的一些需要记录的info设置
info.plist文件: <key>NSExceptionDomains</key> <dict> <key>appapi.700bike.com&l ...
- maven工程模块化
前言 项目的模块化有利于任务分工,后期维护,易扩展,模块还可以独立成服务单独部署等: 创建packaging类型为POM的父项目 我用的maven插件是m2e,相信大部分人在eclipse装的也是m2 ...