給串口發送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;
}
}
}
最後更新:2017-04-02 00:06:22