Как я могу использовать dataReceived событие SerialPort в C # - PullRequest
0 голосов
/ 09 января 2019

У меня было приложение, которое извлекает данные из шкалы EXA, из последовательного порта c #. Я хотел бы сделать то же самое, но на этот раз другой маркой, KERN PFB, проблема в том, что событие SerialDataReceivedEventHandler никогда не выполняется. Я не знаю, чего мне здесь не хватает.

Я пытался с этим: Как использовать событие dataReceived объекта порта SerialPort в 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;
    }

Я ожидаю, что данные получены, но нет.

Спасибо.

1 Ответ

0 голосов
/ 15 января 2019
 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;
}
...