當前位置:編程學習大全網 - 編程語言 - C#如何發送串行指令?

C#如何發送串行指令?

使用系統;

使用系統。IO .端口;

使用系統。穿線;

公共類PortChat

{

靜態bool _ continue

靜態串行端口_串行端口;

公共靜態void Main()

{

字符串名稱;

字符串消息;

string comparer string comparer = string comparer。普通案件;

Thread readThread =新線程(Read);

//使用默認設置創建新的SerialPort對象。

_ serial port = new serial port();

//允許用戶設置適當的屬性。

_串行端口。port name = set port name(_ serial port。port name);

_串行端口。BaudRate = SetPortBaudRate(_ serial port。波德拉特);

_串行端口。parity = setport parity(_ serial port。平價);

_串行端口。DataBits = SetPortDataBits(_ serial port。數據比特);

_串行端口。stop bits = SetPortStopBits(_ serial port。停止位);

_串行端口。handshake = SetPortHandshake(_ serial port。握手);

//設置讀/寫超時

_串行端口。ReadTimeout = 500

_串行端口。WriteTimeout = 500

_串行端口。open();

_ continue = true

讀取線程。start();

控制臺。寫("姓名:");

名稱=控制臺。ReadLine();

控制臺。WriteLine("鍵入QUIT退出");

while(_繼續)

{

消息=控制臺。ReadLine();

if (stringComparer。等於("退出",消息))

{

_ continue = false

}

其他

{

_串行端口。WriteLine(

字符串。格式(" & lt{ 0 } & gt:{1}”,姓名,消息));

}

}

讀取線程。join();

_串行端口。close();

}

公共靜態void Read()

{

while(_繼續)

{

嘗試

{

字符串message = _serialPort。ReadLine();

控制臺。WriteLine(消息);

}

catch (TimeoutException) { }

}

}

公共靜態字符串SetPortName(字符串defaultPortName)

{

字符串端口名;

控制臺。WriteLine("可用端口:");

foreach(串行端口中的字符串s。GetPortNames())

{

控制臺。WriteLine(“{ 0 }”,s);

}

控制臺。Write("COM端口({0}):",default port name);

端口名=控制臺。ReadLine();

if (portName == " ")

{

portName = defaultPortName

}

返回端口名;

}

public static int SetPortBaudRate(int defaultPortBaudRate)

{

字符串波特率;

控制臺。Write("波特率({0}):",defaultPortBaudRate);

波德拉特=控制臺。ReadLine();

if (baudRate == " ")

{

baudRate = defaultPortBaudRate。ToString();

}

返回int。parse(baudRate);

}

公共靜態奇偶校驗設置端口奇偶校驗(奇偶校驗默認端口奇偶校驗)

{

字符串奇偶校驗;

控制臺。WriteLine("可用的奇偶校驗選項:");

foreach(枚舉中的字符串。GetNames(奇偶校驗類型))

{

控制臺。WriteLine(“{ 0 }”,s);

}

控制臺。Write("Parity({0}):",defaultPortParity。ToString());

奇偶=控制臺。ReadLine();

if (parity == " ")

{

奇偶校驗=默認端口奇偶校驗。ToString();

}

返回(奇偶校驗)枚舉。Parse(類型of(奇偶校驗),奇偶校驗);

}

public static int SetPortDataBits(int defaultPortDataBits)

{

字符串數據比特;

控制臺。Write("數據位({0}):",defaultPortDataBits);

數據比特=控制臺。ReadLine();

if (dataBits == " ")

{

dataBits = defaultPortDataBits。ToString();

}

返回int。解析(數據比特);

}

公共靜態停止位設置端口停止位(停止位默認端口停止位)

{

字符串停止位;

控制臺。WriteLine("可用停止位選項:");

foreach(枚舉中的字符串。GetNames(類型of(停止位)))

{

控制臺。WriteLine(“{ 0 }”,s);

}

控制臺。Write("Stop Bits({0}):",defaultPortStopBits。ToString());

停止位=控制臺。ReadLine();

if (stopBits == " ")

{

stopBits = defaultPortStopBits。ToString();

}

返回(停止位)枚舉。Parse(typeof(停止位),停止位);

}

公共靜態握手SetPortHandshake(握手默認端口握手)

{

字符串握手;

控制臺。WriteLine("可用的握手選項:");

foreach(枚舉中的字符串。GetNames(握手類型))

{

控制臺。WriteLine(“{ 0 }”,s);

}

控制臺。Write("Stop Bits({0}):",defaultPortHandshake。ToString());

握手=控制臺。ReadLine();

if(握手== " ")

{

握手= defaultPortHandshake。ToString();

}

返回(握手)枚舉。Parse(typeof(握手),握手);

}

}

  • 上一篇:GTK編程怎麽樣實現下拉框不可輸入,只能選擇?
  • 下一篇:議論寫作文要有細節描寫
  • copyright 2024編程學習大全網