你好
我是 C# 串口新手。我写了一个c#程序,运行在winXP和win7上,以在机器发送数据时保留从串口接收到的数据。
using System.IO;
using System.IO.Ports;
using System.Threading;
namespace RS232RVR
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
SettingRS232();
}
public void SettingRS232 ()
{
try
{
SerialPort mySerialPort = new SerialPort("COM6");
mySerialPort.BaudRate = 9600;
mySerialPort.Parity = Parity.None;
mySerialPort.StopBits = StopBits.One;
mySerialPort.DataBits = 8;
mySerialPort.Handshake = Handshake.None; //send to hardware flow control.
mySerialPort.DataReceived += new SerialDataReceivedEventHandler(DataReceviedHandler);
mySerialPort.Open();
richTextBox1.Text = "on";
mySerialPort.Close();
}
catch (Exception ex)
{
richTextBox1.Text = ex.Message;
}
}
private void DataReceviedHandler(
object sender,
SerialDataReceivedEventArgs e)
{
SerialPort sp = (SerialPort)sender;
string indata = sp.ReadExisting();
richTextBox1.Text = indata;
}
}
}
COM6 在我的电脑中处于活动状态。但我的问题是,当 datareceived 事件有来自串行端口的数据时,它似乎不会触发。 (我已经使用一些免费软件应用程序检查了这项运动)
任何人都可以帮忙吗?
thanks
mySerialPort.Open();
richTextBox1.Text = "on";
mySerialPort.Close();
这是行不通的,您将在打开串行端口几微秒后将其关闭。是的,DataReceived 事件处理程序不太可能触发。仅在关闭程序时关闭端口。
mySerialPort.Handshake = Handshake.None
这也是一个问题,您现在需要自己控制握手信号。绝大多数串行端口设备在看到机器已启动并准备好接收之前不会发送任何内容。将 DtrEnabled 和 RtsEnabled 属性设置为 true。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)