文章首发于浩瀚先森博客

直接上代码

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#串口通信类代码可以直接调用的更多相关文章

  1. 串口通信类,WPF

    参考之前的资料,写了一个自己常用的串口类, 字符串发送类型用了两种方式,char[] 和byte[] : 数据接收也是采用两种 char[] 和byte[] 两种. 类代码贴出来: public cl ...

  2. VC 串口通信类

    为了节省时间,我就贴出来吧 头文件 SerialPort.h /******************************************************************** ...

  3. java 串口通信 代码

    下面是我自己实现的串口接收的类,串口发送比较简单,就直接发送就可以了.下面的这个类可以直接使用. package com.boomdts.weather_monitor.util; import ja ...

  4. C\C++串口通信编程的一点技术记录

    新工作接的第一个活,要写一个配合设备调试的上位机程序. 除了MFC界面的部分,就是要处理几条命令. 串口通信部分代码借鉴的是这一篇文章:http://blog.sina.com.cn/s/blog_a ...

  5. boost实现串口通信(一):小试牛刀

    /************************************************************************/ /* 功能:boost实现串口通信类 */ /* ...

  6. Qt 串口通信

    在Qt5之前,串口通信基本依赖于第三方库,下面是我曾接触过的串口通信类库: 名称 语言 平台   QextSerialPort QT C++ Win/Linux http://sourceforge. ...

  7. Qt串口通信

    1. Qt串口通信类QSerialPort 在Qt5的的更新中,新增了串口通信的相关接口类QSerialPort,这使得在开发者在使用Qt进行UI开发时,可以更加简单有效地实现串口通信的相关功能. 开 ...

  8. C++实现串口通信问题(与Arduino)

    参考1(已验证稍加修改可与Arduino通信):https://blog.csdn.net/qq_36106219/article/details/81701368 参考2(比较全,main函数需要自 ...

  9. c#中实现串口通信的几种方法

    c#中实现串口通信的几种方法 通常,在C#中实现串口通信,我们有四种方法: 第一:通过MSCOMM控件这是最简单的,最方便的方法.可功能上很难做到控制自如,同时这个控件并不是系统本身所带,所以还得注册 ...

随机推荐

  1. 【UI插件】简单的日历插件(下)—— 学习MVC思想

    前言 我们上次写了一个简单的日历插件,但是只是一个半成品,而且做完后发现一些问题,于是我们今天尝试来解决这些问题 PS:距离上次貌似很久了 上次,我们大概遇到哪些问题呢: ① 既然想做一套UI库,那么 ...

  2. 学习zepto.js(对象方法)[6]

    first: 获取当前对象集合中的第一个dom元素. $("div").first(); // 返回第一个div对象(zepto对象) //相当于$("div" ...

  3. [Javascript]利用当前时间生成yyyymmddhhmmss这样的字符串

    function pad2(n) { return n < 10 ? '0' + n : n } function generateTimeReqestNumber() { var date = ...

  4. Material Design 概念,环境和基本属性

    Material Design 概念,环境和基本属性 Material Design是随Android 5.0推出的一种设计概念, 涉及到了跨平台和设备的视觉,动态,交互设计等方面.   设计概念 M ...

  5. 用EF访问Centos下的MySQL

    环境 : MySQL 5.6.21 64位 CentOS 6.5 64位 VMware 10 Navicat for MySQL 11 VS2013 1.首先搭建centos 的MySQL开发环境 : ...

  6. mysql权限与安全

    一.MySQL权限系统通过两个阶段进行认证: (A) 对用户进行身份认证,IP地址和用户名联合, (B) 对合法用户赋予相应权限,权限表在数据库启动的时候载入内存中. 二.在权限的存取过程中,会用到& ...

  7. C#--字符、字符串学习

    字符 在.NET Framework中,每个字符都是System.Char结构的一个实例.System.Char类型很简单,提供了两个公共只读常量字段:MinValue和MaxValue. GetNu ...

  8. 正则表达式解析URL

    正则表达式: var match = /^((ht|f)tps?:)\/\/([\w-]+(\.[\w-]+)*\/){1}(([\w-]+(\.[\w-]+)*\/?)*)?(\?([\w\-\., ...

  9. MongoDB学习笔记~MongoVUE对数据进行查询,排序和按需显示

    回到目录 对于MongoDB这个非关系型数据库(NoSql)来说,找一个IDE工具不是很容易,还好被我找到了,它就是大名鼎鼎的MongoVUE,它可以对mongodb数据表进行增删改查,下面我主要说一 ...

  10. Redis 使用说明 安装配置 主从复制

        开机加自启动: echo "redis-server /etc/redis.conf" >>/etc/rc.local    以前有想过用 Memcache 实 ...