对C#SerialPort.Write()方法的误解
我的任务是通过代码将输入数据发送到串行端口。我使用.NETFramework4客户端配置文件。我有一个成功处理扫描器数据的例子,我想通过编程来模拟这个例子。C#SerialPort.Write()似乎适用于此,但port#u DataReceived处理程序不起任何作用:对C#SerialPort.Write()方法的误解,c#,.net,serial-port,C#,.net,Serial Port,我的任务是通过代码将输入数据发送到串行端口。我使用.NETFramework4客户端配置文件。我有一个成功处理扫描器数据的例子,我想通过编程来模拟这个例子。C#SerialPort.Write()似乎适用于此,但port#u DataReceived处理程序不起任何作用: namespace ConsoleApplication_ReadTabel { class SerialPortProgram { private SerialPort port;
namespace ConsoleApplication_ReadTabel
{
class SerialPortProgram
{
private SerialPort port;
string input = "";
[STAThread]
static void Main(string[] args)
{
new SerialPortProgram();
}
private SerialPortProgram()
{
port = new SerialPort("COM1", 9600, Parity.None, 8, StopBits.One);
Console.WriteLine("Incoming Data:");
port.DataReceived += new
SerialDataReceivedEventHandler(port_DataReceived);
port.Open();
port.Write("ghghgh");
Console.Read();
}
private void port_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
input = port.ReadLine();
Console.WriteLine(input);
Console.WriteLine("----");
}
}
}
问题是Console.Read(); 你可以试试这个
namespace ConsoleApplication_ReadTabel
{
class SerialPortProgram
{
private SerialPort port;
string input = "";
[STAThread]
static void Main(string[] args)
{
new SerialPortProgram();
}
private SerialPortProgram()
{
port = new SerialPort("COM1", 9600, Parity.None, 8, StopBits.One);
Console.WriteLine("Incoming Data:");
port.DataReceived += new
SerialDataReceivedEventHandler(port_DataReceived);
port.Open();
port.Write("ghghgh");
Console.Read();//when program is waiting here, send something the port and continue
Thread.Sleep(5000);
Console.Read();
}
private void port_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
input = port.ReadLine();
Console.WriteLine(input);
Console.WriteLine("----");
}
}
}
这是对的。我们不能通过代码在同一个端口同时写和读(至少通过使用.NETFramework4)。所以决定使用自由软件在两个虚拟端口之间创建连接。第一个调用write()方法,第二个处理输入信号
class SerialPortProgram
{
private SerialPort port, port2;
[STAThread]
static void Main(string[] args)
{
new SerialPortProgram();
}
private SerialPortProgram()
{
port = new SerialPort("COM3", 9600, Parity.None, 8, StopBits.One);
port.Open();
port2 = new SerialPort("COM4", 9600, Parity.None, 8, StopBits.One);
port2.DataReceived += new SerialDataReceivedEventHandler(port2_DataReceived);
port2.Open();
port.Write("Hello!");
Console.Read();
}
void port2_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
Console.WriteLine("COM4 incoming data:");
Thread.Sleep(300);
string inp = port2.ReadExisting();
Console.WriteLine(inp);
Console.WriteLine("----");
}
}
您使用的是什么版本的.net?核心还是框架?请搜索单词loopback test以了解其内容。除非同一端口的传输和接收通过硬件连接,否则无法从同一端口读取写入端口的内容。我使用.NET Framework 4客户端配置文件