给串口发送16进制字符串命令和包括16进制命令转换为字节数组

简介: <p>using System;<br>using System.Collections.Generic;<br>using System.Text;<br>using System.IO.Ports;<br>namespace SerialPortControl<br>{<br>    public class PortControl<br>    {</p> <p>        ///

using System;
using System.Collections.Generic;
using System.Text;
using System.IO.Ports;
namespace SerialPortControl
{
    public class PortControl
    {

        /// <summary>
        /// 向端口中发送命令。
        /// </summary>
        /// <param name="hexstring">"0A 46 0B 31 30 30 32 35"</param>
        /// <remarks>我本人对串口目前不是很熟悉,这次项目中需要,所以正在学习,后面我可能还会写一些。</remarks>
        /// <example>  SerialPortControl.PortControl.WriteCommand("0A 46 0B 31 30 30 32 35")</example>
        public static  void WriteCommand(string hexstring)
        {
            SerialPort sp = new SerialPort("COM1");
            byte[] buff=HexStringToBinary(hexstring.Trim()                );
            sp.WriteBufferSize = buff.Length ;
            sp.Open();
            sp.Write(buff ,0,buff.Length);
            sp.Close();
            sp.Dispose();
        }
        /// <summary>
        /// 16进制字符串转换为二进制数组
        /// </summary>
        /// <param name="hexstring">字符串每个字节之间都应该有空格,大多数的串口通讯资料上面的16进制都是字节之间都是用空格来分割的。</param>
        /// <returns>返回一个二进制字符串</returns>
        public static byte[] HexStringToBinary(string hexstring)
        {
            string[] tmpary = hexstring.Split(' ');
            byte[] buff = new byte[tmpary.Length];
            for (int i = 0; i < buff.Length ; i++)
   {
                buff[i] = Convert.ToByte(tmpary[i], 16);
   }
            return buff;
        }
    }
}


 
目录
相关文章
串口网口16进制发送的和ASCII发送以及16进制接收和ASCII接收区别
我们在工控软件中,会经常使用到网口和串口,去接受和发送数据。通常我们发送数据的模式有两种,一种16进制,一种是ASCII码。16进制的的经常会用来和仪器PLC等设备通讯。ACSII码是一种文本模式。
1233 0
串口网口16进制发送的和ASCII发送以及16进制接收和ASCII接收区别
|
6月前
|
传感器 数据采集 网络协议
Java串口通信:从十六进制字符串到字节数组的正确转换与发送
Java串口通信:从十六进制字符串到字节数组的正确转换与发送
275 4
|
6月前
|
C#
C# | [字节数组]与[16进制字符串]互相转换 - CodePlus系列
十六进制(简写为hex或下标16)是一种基数为16的计数系统,是一种逢16进1的进位制。通常用数字0、1、2、3、4、5、6、7、8、9和字母A、B、C、D、E、F(a、b、c、d、e、f)表示,其中:A~F表示10~15,这些称作十六进制数字。 我们在做开发的过程中,经常需要将收发数据打印出来检查。如何简单高效的一行代码转换字节数组到字符串呢?我们来一起看看吧!
111 0
C# | [字节数组]与[16进制字符串]互相转换 - CodePlus系列
|
自然语言处理
转换流,字节字符的转换
转换流,字节字符的转换
常用字节转换(字符串转16进制,16进制转字符串)
常用字节转换(字符串转16进制,16进制转字符串)
|
Go 开发者
二进制转成其他进制|学习笔记
快速学习二进制转成其他进制
121 0
二进制转成其他进制|学习笔记
|
PHP
PHP函数运用之怎么进行进制的转换
在上一篇文章《PHP函数运用之返回某个日期的前一天和后一天》中,我们介绍了利用strtotime() 函数获取给定日期前一天和后一天日期、前一月和后一月日期、一周和后一周的日期等方法,感兴趣的朋友可以学习了解一下~ 本文的重点是“进制转换”,介绍一下二进制数和十进制数的相互转换、十进制数和十六进制数的相互转换、十进制数和八进制数的相互转换。 二进制数和十进制数的相互转换 1、二进制数转十进制数 可以使用 bindec(二进制字符串) 函数,它可把二进制数转换为十进制数。
136 0