C#CSharp SerialPortシリアルポートツールクラス
2461 ワード
ここ数日産線の治具を作るには、シリアルポートが必要で、ここで検討しました.
とても簡単で、すべて静的な関数で、直接呼び出せばいいです
このクラスはシリアルポートの同期読み出しと非同期読み出しを実現することができる.
UIスレッドに置かないでください.ブロックされます.backgroundworkerを使用できます
必要だIO.Ports;
とても簡単で、すべて静的な関数で、直接呼び出せばいいです
このクラスはシリアルポートの同期読み出しと非同期読み出しを実現することができる.
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;
//
}
}
}