C# 如何在C中使用SerialPort的dataReceived事件#
我有一个应用程序,可以从EXA品牌的秤上,从串行端口c#检索数据。 我也想做同样的事情,但这次是另一个品牌KERN PFB,问题是SerialDataReceiveDevenHandler事件从未执行。我不知道我在这里错过了什么 我试过这个: 我希望数据已收到,但未收到 多谢各位C# 如何在C中使用SerialPort的dataReceived事件#,c#,serial-port,balance,C#,Serial Port,Balance,我有一个应用程序,可以从EXA品牌的秤上,从串行端口c#检索数据。 我也想做同样的事情,但这次是另一个品牌KERN PFB,问题是SerialDataReceiveDevenHandler事件从未执行。我不知道我在这里错过了什么 我试过这个: 我希望数据已收到,但未收到 多谢各位 那么它与设备X完美配合,但与设备Y不配合?更可能是波特率/奇偶校验/停止/数据/握手/rts配置问题?您在哪里调用SetSetting()方法?是的,它与设备X完美配合,但与设备Y不完美。@CaiusJardI在sbP
那么它与设备X完美配合,但与设备Y不配合?更可能是波特率/奇偶校验/停止/数据/握手/rts配置问题?您在哪里调用SetSetting()方法?是的,它与设备X完美配合,但与设备Y不完美。@CaiusJardI在sbPeser_单击中调用SetString()方法,如下所示:private void sbPeser_单击(对象发送方,事件参数e){setSetSetting();float poid=GetPesage();/…/}@jdwengt问题是即使接收到数据,也不会调用事件处理程序。
public static SerialPort mySerialPort = new SerialPort("COM1");
public static string indata = string.Empty;
public static void SetSetting()
{
mySerialPort.BaudRate = 9600;
mySerialPort.Parity = Parity.None;
mySerialPort.StopBits = StopBits.One;
mySerialPort.DataBits = 8;
mySerialPort.Handshake = Handshake.None;
mySerialPort.RtsEnable = true;
mySerialPort.DataReceived += MySerialPort_DataReceived;
}
public static void MySerialPort_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
SerialPort sp = (SerialPort)sender;
indata += sp.ReadExisting();
}
public static float GetPesage()
{
indata = string.Empty;
mySerialPort.Open();
Thread.Sleep(1000);
string[] dataSplited = indata.Trim().Split(' ');
float poids = 0;
//
...
//
mySerialPort.Close();
return poids;
}
Command S : Stable weighing value for the weight is sent via the interface
public static float GetPesage()
{
indata = string.Empty;
mySerialPort.Open();
mySerialPort.Write("s");
Thread.Sleep(1000);
string[] dataSplited = indata.Trim().Split(' ');
float poids = 0;
//
...
//
mySerialPort.Close();
return poids;
}