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控件这是最简单的,最方便的方法.可功能上很难做到控制自如,同时这个控件并不是系统本身所带,所以还得注册 ...
随机推荐
- Google LOGO现代舞舞蹈动画
效果预览:http://hovertree.com/texiao/js/5.htm 截图: HTML文件代码: <!DOCTYPE html> <html xmlns="h ...
- MYSQL新手入门篇
一.数据库的简介 什么是数据库? 数据的仓库,如:在atm的实例中我们创建一个db目录称之为数据库 什么是 MySQL.Oracle.SQLite.Access.MS SQL Server等 ? 他们 ...
- Egret白鹭H5小游戏开发入门(二)
前言: 昨天的文章中简单的介绍了Egret白鹭引擎从安装到基本的使用配置等问题,今天着重介绍H5小游戏开发的起步阶段,如Wing面板的使用,素材的处理,类的说明,开始布局等等. 整体概况: 根据上一篇 ...
- 在sharepoint2013中如使用PowerView
在sharepoint2013中如使用PowerView 安装前提 Sql sqlserver 2012 sp1 Sharepoint2013 Sql server 2012 sp1 PowerPiv ...
- 委托的N种写法,你喜欢哪种?
一.委托调用方式 1. 最原始版本: delegate string PlusStringHandle(string x, string y); class Program { static void ...
- 如何设置TextView控件的背景透明度和字体透明度
如何设置TextView控件的背景透明度和字体透明度 设计师给的标注都是类似这样的: 字号:26 颜色:#000000 透明度:80% 其实,程序上只要需要一个色值就OK了,那么这个色值我如何计算呢? ...
- python之ATM
每次做一点就发出来,大神不要嫌重复 2016/11/4 今天来搞ATM,反正逃不了的,说来惭愧,这个作业是我10/4号20天前拿到的,当时是万脸蒙比的,今天又做了一点,现在算是百脸蒙比吧. 一.需求: ...
- 在 CentOS7 上部署 zookeeper 服务
在 CentOS7 上部署 zookeeper 服务 1 用 SecureCRT 或 XShell 等 Linux 客户端工具连接至 CentOS7 服务器: 2 进入到 /usr/local/too ...
- 关于UIApplication单例传值
由于UIApplication的是一个系统级别的单例,那么就能够省去自己创建单例的方法,将需要需要的类对象,在UIApplication单例内声明一个,通过点语法来实现单个 需要调用的实现单例模式的类 ...
- iPhone 6 被盗记录二【写在315前夕:苹果售后福州直信创邺在没有三包的情况下帮小偷翻新、助力小偷换机销赃!无视王法。让人震惊,痛心,憎恨!消费者很受伤很无奈】
投诉公司: 北京直信创邺数码科技有限公司 标题: 写在315前夕:苹果售后在没有三包的情况下帮小偷翻新.助力小偷换机销赃!无视王法.让人震惊,痛心,憎恨!消费者很受伤很无奈 期望: 还我手机,或者赔 ...