C#CSharp SerialPortシリアルポートツールクラス

2461 ワード

ここ数日産線の治具を作るには、シリアルポートが必要で、ここで検討しました.
とても簡単で、すべて静的な関数で、直接呼び出せばいいです
このクラスはシリアルポートの同期読み出しと非同期読み出しを実現することができる.
UIスレッドに置かないでください.ブロックされます.backgroundworkerを使用できます
必要だIO.Ports;
 public class SerialPortHelp
    {
        // 
        public static bool Test(SerialPort serialport)
        {
            try
            {
                serialport.Open();
                serialport.Close();
                return true;
            }
            catch (Exception)
            {
                return false;
            }
        }
        // 
        static public  bool Send(string data,SerialPort serialport)
        {
            try
            {
                serialport.Write(data);
                return true;
            }
            catch (Exception)
            {
                return false;
            }
        }
        // 
        static public bool SendBinary(byte[] data, SerialPort serialport)
        {
            try
            {
                serialport.Write(data, 0, data.Length);
                return true;
            }
            catch (Exception)
            {
                return false;
            }
        }
        //   
        static public string SynRead(int TimeoutMs, SerialPort serialport)
        {
            string data;
            serialport.ReadTimeout = TimeoutMs;
            try
            {
                // 
                byte firstByte = Convert.ToByte(serialport.ReadByte());
                int bytesRead = serialport.BytesToRead;
                byte[] bytesData = new byte[bytesRead + 1];
                bytesData[0] = firstByte;
                for (int i = 1; i <= bytesRead; i++)
                    bytesData[i] = Convert.ToByte(serialport.ReadByte());
                data = System.Text.Encoding.Default.GetString(bytesData);
                return data;
            }
            catch (Exception)
            {
               
                return string.Empty;
                // 
            }
        }
        // 
        static public string AsyRead(int waitTimeMs, SerialPort serialport)
        {
            string data;
            System.Threading.Thread.Sleep(waitTimeMs);
            try
            {
                data = serialport.ReadExisting();
                return data;
            }
            catch (Exception)
            {
                return string.Empty;
                // 
            }
        }
    }