MSDN上serialport的例子都出错了,救命啊!!!

wokeyihenkeai 2012-04-02 10:18:42
在MSDN上看了serialport的示例


using System;
using System.IO.Ports;
using System.Threading;

public class PortChat
{
static bool _continue;
static SerialPort _serialPort;

public static void Main()
{
string name;
string message;
StringComparer stringComparer = StringComparer.OrdinalIgnoreCase;
Thread readThread = new Thread(Read);

// Create a new SerialPort object with default settings.
_serialPort = new SerialPort();

// Allow the user to set the appropriate properties.
_serialPort.PortName = SetPortName(_serialPort.PortName);
_serialPort.BaudRate = SetPortBaudRate(_serialPort.BaudRate);
_serialPort.Parity = SetPortParity(_serialPort.Parity);
_serialPort.DataBits = SetPortDataBits(_serialPort.DataBits);
_serialPort.StopBits = SetPortStopBits(_serialPort.StopBits);
_serialPort.Handshake = SetPortHandshake(_serialPort.Handshake);

// Set the read/write timeouts
_serialPort.ReadTimeout = 500;
_serialPort.WriteTimeout = 500;

_serialPort.Open();
_continue = true;
readThread.Start();

Console.Write("Name: ");
name = Console.ReadLine();

Console.WriteLine("Type QUIT to exit");

while (_continue)
{
message = Console.ReadLine();

if (stringComparer.Equals("quit", message))
{
_continue = false;
}
else
{
_serialPort.WriteLine(
String.Format("<{0}>: {1}", name, message));
}
}

readThread.Join();
_serialPort.Close();
}

public static void Read()
{
while (_continue)
{
try
{
string message = _serialPort.ReadLine();
Console.WriteLine(message);
}
catch (TimeoutException) { }
}
}

public static string SetPortName(string defaultPortName)
{
string portName;

Console.WriteLine("Available Ports:");
foreach (string s in SerialPort.GetPortNames())
{
Console.WriteLine(" {0}", s);
}

Console.Write("COM port({0}): ", defaultPortName);
portName = Console.ReadLine();

if (portName == "")
{
portName = defaultPortName;
}
return portName;
}

public static int SetPortBaudRate(int defaultPortBaudRate)
{
string baudRate;

Console.Write("Baud Rate({0}): ", defaultPortBaudRate);
baudRate = Console.ReadLine();

if (baudRate == "")
{
baudRate = defaultPortBaudRate.ToString();
}

return int.Parse(baudRate);
}

public static Parity SetPortParity(Parity defaultPortParity)
{
string parity;

Console.WriteLine("Available Parity options:");
foreach (string s in Enum.GetNames(typeof(Parity)))
{
Console.WriteLine(" {0}", s);
}

Console.Write("Parity({0}):", defaultPortParity.ToString());
parity = Console.ReadLine();

if (parity == "")
{
parity = defaultPortParity.ToString();
}

return (Parity)Enum.Parse(typeof(Parity), parity);
}

public static int SetPortDataBits(int defaultPortDataBits)
{
string dataBits;

Console.Write("Data Bits({0}): ", defaultPortDataBits);
dataBits = Console.ReadLine();

if (dataBits == "")
{
dataBits = defaultPortDataBits.ToString();
}

return int.Parse(dataBits);
}

public static StopBits SetPortStopBits(StopBits defaultPortStopBits)
{
string stopBits;

Console.WriteLine("Available Stop Bits options:");
foreach (string s in Enum.GetNames(typeof(StopBits)))
{
Console.WriteLine(" {0}", s);
}

Console.Write("Stop Bits({0}):", defaultPortStopBits.ToString());
stopBits = Console.ReadLine();

if (stopBits == "")
{
stopBits = defaultPortStopBits.ToString();
}

return (StopBits)Enum.Parse(typeof(StopBits), stopBits);
}

public static Handshake SetPortHandshake(Handshake defaultPortHandshake)
{
string handshake;

Console.WriteLine("Available Handshake options:");
foreach (string s in Enum.GetNames(typeof(Handshake)))
{
Console.WriteLine(" {0}", s);
}

Console.Write("Handshake({0}):", defaultPortHandshake.ToString());
handshake = Console.ReadLine();

if (handshake == "")
{
handshake = defaultPortHandshake.ToString();
}

return (Handshake)Enum.Parse(typeof(Handshake), handshake);
}
}















在自己机上运行一次,oh ,my god!!!居然出现错误了,不停出现
在 System.TimeoutException 中第一次偶然出现的“System.dll”类型的异常
我看了一下代码,理论上我输进去应该就能读的啊,怎么会抛出错误呢?
有没有遇到过这种错误的朋友
求救一下!!!
...全文
178 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
troylam 2012-09-11
  • 打赏
  • 举报
回复
应该是在本地要实现串口通信第二三针要跳线连接
rong508 2012-09-10
  • 打赏
  • 举报
回复
你设个断点看一下是哪里错了?有时候是我们的组件不对

111,126

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧