文章首发于浩瀚先森博客

直接上代码

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. SharePoint 2013 图文开发系列之可视化WebPart

    有了WebPart开发的基础,再进行可视化WebPart开发,就容易多了.创建和开发过程,两者非常相似,下面,我们简单介绍下可视化WebPart的开发. 1.添加新项目,选择SharePoint 20 ...

  2. Alvin

    Alvin Zhao 東京都 港区虎ノ門2-10-4 ホテルオークラ東京 M 663 電話番号: 0335820111

  3. 字典转模型框架 Mantle的使用:国外程序员最常用的iOS模型

    Mantle简介 Mantle 是iOS和Mac平台下基于Objective-C编写的一个简单高效的模型层框架. Mantle能做什么 Mantle可以轻松把JSON数据.字典(Dictionary) ...

  4. UItableView与UICollectionView

    UITableView 1. UITableViewStyleGrouped 分区表格样式创建表格 .separatorStyle = UITableViewCellSeparatorStyleSin ...

  5. Mac使用极简教程

    最近领导让我写一篇关于Mac的使用教程,因为使用人群未知,所以尽量写的通俗易懂,可谓是关于Mac电脑使用的精简教程吧,在此发表出来以供参考. Mac因为安全性而闻名,我们拥有了一部Mac,那么我们来了 ...

  6. git笔记

    这篇有关git的博客,写着写着有些崩了.里面有些碎碎念了.下次一定注意这个问题. 创建项目: midir xx :创建xx文件夹 git init : 为当前文件夹创建代码仓库 提交代码: git a ...

  7. Linux(RHEL6.0)下安装GCC

    查看系统版本 [root@CP-RHEL proc]# cat /etc/issue Red Hat Enterprise Linux Server release 6.0 (Santiago) Ke ...

  8. Windows系统下Oracle每天自动备份

    linux和unix下面使用shell可以很方便实现,如果windows环境下可以结合计划任务实现 创建备份目录d:\backup, 创建批处理命令Bak.bat,编写备份脚本 exp user/pa ...

  9. 【mysql】关于悲观锁

    关于mysql中的锁 在并发环境下,有可能会出现脏读(Dirty Read).不可重复读(Unrepeatable Read). 幻读(Phantom Read).更新丢失(Lost update)等 ...

  10. [Java入门笔记] 面向对象三大特征之:继承

    理解什么是继承 首先我们知道,面对对象有三大特征: 封装:解决了数据的安全性问题 继承:解决了代码的重用问题 多态:解决了程序的扩展问题 上一篇博客中,我们了解了一下封装,现在我了再来看看什么是继承. ...