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;
        }
    }
时间: 2024-10-14 07:14:58

c#串口通信类代码可以直接调用的相关文章

串口通信类,WPF

参考之前的资料,写了一个自己常用的串口类, 字符串发送类型用了两种方式,char[] 和byte[] : 数据接收也是采用两种 char[] 和byte[] 两种. 类代码贴出来: public class SerialPortManager { private bool _recStaus = true;//接收状态字 private bool _comPortIsOpen; private void SetAfterClose()//成功关闭串口或串口丢失后的设置 { _comPortIsO

VC 串口通信类

为了节省时间,我就贴出来吧 头文件 SerialPort.h 1 /*************************************************************************************************** 2 * SerialPort.h 3 * 4 * 功 能:串口通讯类 5 * 类 名:CSerialPort 6 * 7 * Ver 变更日期 负责人 变更内容 8 * ───────────────────────────────

串口通信(基础)

参考文章:http://www.cnblogs.com/aierong/archive/2009/08/21/1551589.html http://www.cnblogs.com/procoder/archive/2009/04/07/1430871.html http://blog.csdn.net/cy757/article/details/4474930 SerialPort Class Windows 7 虚拟串口 VSPD 6 最近总结了串口(COM)读写操作的三种方式:第1种方式是

Qt 串口通信

在Qt5之前,串口通信基本依赖于第三方库,下面是我曾接触过的串口通信类库: 名称 语言 平台   QextSerialPort QT C++ Win/Linux http://sourceforge.net/projects/qextserialport/files/ QSerialPort QT C++ QT5已经集成 libserial C++ Linux http://files.cnblogs.com/kyyblabla/libserial-0.5.2.gz.7z 以上串口通信类库通信过

「51单片机」RS232串口通信代码分析

想来想去不知道要怎么样把232串口通信说清楚,想想还是直接把代码分析一遍吧... 重点是“常用波特率与定时器1的参数关系”这张表格!波特率的设置很重要! 一.串口初始化 void usart_init() { SCON = 0x50; //REN=1允许串行接受状态,串口工作模式1 TMOD = 0x20; //定时器工作方式2 PCON = 0x00; TH1 = 0xFD; //波特率9600.数据位8.停止位1.效验位无 (11.0592M) TL1 = 0xFD; ES = 1; //开

转:Qt编写串口通信程序全程图文讲解

转载:http://blog.csdn.net/yafeilinux/article/details/4717706  作者:yafeilinux (说明:我们的编程环境是windows xp下,在Qt Creator中进行,如果在Linux下或直接用源码编写,程序稍有不同,请自己改动.) 在Qt中并没有特定的串口控制类,现在大部分人使用的是第三方写的qextserialport类,我们这里也是使用的该类.我们可以去 http://sourceforge.net/projects/qextser

C#串口通信—向串口发送数据,同步接收返回数据

最近写C#串口通信程序,系统是B/S架构.SerialPort类有一个DataReceived事件,用来接收串口返回的数据,但这种方式在C/S架构下很好用,但B/S就不好处理了.所以写了一个同步模式接收返回数据的方法,不使用DataReceived事件.经过测试,可以正常使用(不支持多线程调用). 一.Machine类 1.Machine类有一个静态变量,定义如下: private static SerialPort serialPort = null; 2.向串口发送数据,同步接收返回数据的方

SPCOMM控件在Delphi串口通信中的应用

SPCOMM控件在Delphi串口通信中的应用 2010-07-08 22:20:31|  分类: 个人日记 |举报 |字号 订阅 2009-03-01 05:35 摘要:利用Delphi开发工业控制系统软件成为越来越多的开发人员的选择,而串口通信是这个过程中必须解决的问题之一.本文在对几种常用串口通信方法分析比较的基础上,着重讨论了Delphi开发环境下利用Spcomm控件实现PC机与单片机之间串口通信的方法,研究了Spcomm串口通信的关键技术问题,并通过一个实例给出了Spcomm控件在De

Java实现串口通信的小样例

用Java实现串口通信(windows系统下),须要用到sun提供的串口包 javacomm20-win32.zip.当中要用到三个文件,配置例如以下: 1.comm.jar放置到 JAVA_HOME/jre/lib/ext; 2.win32com.dll放置到 JAVA_HOME/bin; 3.javax.comm.properties 两个地方都要放 jre/lib(也就是在JAVA目录下的jre) JAVA_HOME/jre/lib 说一下我应用的环境.电子秤称重时,计算机通过串口给称重控