【发布时间】:2019-01-09 12:09:53
【问题描述】:
我有一个应用程序可以从串口 c# 检索 EXA 品牌秤的数据。 我想做同样的事情,但这次是另一个品牌 KERN PFB,问题是 SerialDataReceivedEventHandler 事件永远不会执行。我不知道我在这里错过了什么。
我试过这个:How do I use dataReceived event of the SerialPort Port Object in C#?
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;
}
我希望收到数据但没有收到。
谢谢。
【问题讨论】:
-
所以它可以完美地与设备 X 一起工作,但不能与设备 Y 一起工作?更有可能是波特/奇偶校验/停止/数据/握手/rts 配置问题?
-
你在哪里调用 SetSetting() 方法?
-
是的,它适用于设备 X,但不适用于设备 Y。@CaiusJard
-
我在 sbPeser_Click 中调用了 SetString() 方法,如下所示: private void sbPeser_Click(object sender, EventArgs e) { SetSetting();浮动 poids = GetPesage(); // ... // } @jdwengspan>
-
问题是事件处理程序永远不会被调用,即使正在接收数据。
标签: c# serial-port balance