閱讀706 返回首頁    go 阿裏雲 go 技術社區[雲棲]


給串口發送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

  上一篇:go [轉貼]改好DEBUG七處缺點的comexe實現報告
  下一篇:go 使用字符串方式給web服務和vb6傳輸圖片