C# 控制台中的串行端口应用程序不工作
我正在尝试在C# 控制台中的串行端口应用程序不工作,c#,serial-port,console-application,C#,Serial Port,Console Application,我正在尝试在c#中创建一个控制台应用程序,它读取串行端口,并通过TCP将数据发送到网络中的另一台机器 我已经编写了以下代码 class Program { static SerialPort mPort; static void Main(string[] args) { mPort = new SerialPort(); mPort.BaudRate = 4800; mPort.StopBits = StopBits.O
c#
中创建一个控制台
应用程序,它读取串行端口
,并通过TCP
将数据发送到网络中的另一台机器
我已经编写了以下代码
class Program
{
static SerialPort mPort;
static void Main(string[] args)
{
mPort = new SerialPort();
mPort.BaudRate = 4800;
mPort.StopBits = StopBits.One;
mPort.Parity = Parity.None;
mPort.Handshake = Handshake.None;
mPort.DataBits = 8;
mPort.PortName = "COM4";
if (!mPort.IsOpen)
{
mPort.Open();
}
mPort.DataReceived += new SerialDataReceivedEventHandler(mPort_DataReceived);
}
private static void mPort_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
try
{
if (mPort.IsOpen)
{
}
}
catch
{
}
}
}
但是应用程序在点击mPort.DataReceived+=new SerialDataReceivedEventHandler(mPort\u DataReceived)后关闭代码>静态void Main(字符串[]args)
函数中的行
为什么不触发
mPort\u DataReceived
事件???这是控制台应用程序的基本行为。只需添加:
mPort.DataReceived += ...
/// wait till something happens
Console.Read();
}
在主方法的末尾。然后看你的活动被解雇
此方法只是该行为的一种变通方法。这是控制台应用程序的基本行为。只需添加:
mPort.DataReceived += ...
/// wait till something happens
Console.Read();
}
在主方法的末尾。然后看你的活动被解雇
这种方法只是这种行为的一种变通方法。行
mPort.DataReceived += new SerialDataReceivedEventHandler(mPort_DataReceived);
正在订阅该活动。但你永远不会等待事件发生
在该行之后,您的Main
方法返回。由于这是进程的主要方法,因此进程在main
返回后终止
保持流程运行的一个简单方法是添加以下内容
Console.ReadLine();
在Main
的末尾,因此您的程序在终止前等待用户按一个键。行
mPort.DataReceived += new SerialDataReceivedEventHandler(mPort_DataReceived);
正在订阅该活动。但你永远不会等待事件发生
在该行之后,您的Main
方法返回。由于这是进程的主要方法,因此进程在main
返回后终止
保持流程运行的一个简单方法是添加以下内容
Console.ReadLine();
在
Main
的末尾,因此您的程序在终止之前等待用户按一个键。原因是,您的程序只是终止。你需要一种循环来保持它的活力,比如这样。它正在运行并检查是否按下了一个键,只有在“退出”时才会停止
// Do initialisation work here
ConsoleKeyInfo cki = new ConsoleKeyInfo();
do
{
// Do frequently work here
if (Console.KeyAvailable)
{
cki = Console.ReadKey();
}
}
while (cki.Key != ConsoleKey.Escape);
原因是,您的程序只是终止。你需要一种循环来保持它的活力,比如这样。它正在运行并检查是否按下了一个键,只有在“退出”时才会停止
// Do initialisation work here
ConsoleKeyInfo cki = new ConsoleKeyInfo();
do
{
// Do frequently work here
if (Console.KeyAvailable)
{
cki = Console.ReadKey();
}
}
while (cki.Key != ConsoleKey.Escape);