给串⼝发送16进制字符串命令和包括16进制命令转换为字节数
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;
}
}
}

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。