使用系統。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(握手),握手);
}
}