簡體   English   中英

從串口讀取數據

[英]read data from serialport

我是C#和編程的新手。

我正在嘗試與通過USB連接到我的計算機的歐姆表進行通信。

我能夠配置設備,甚至接收數據。 但是我無法訪問此數據。 我可以將其打印到控制台上。 (受到Microsoft網站上代碼的啟發)

這是我配置端口的“通信”類的構造函數:

public SCPI_Commands()
    {
        _SerialPort.PortName = SetPortName(_SerialPort.PortName);
        _SerialPort.BaudRate = 115200;
        _SerialPort.Parity = Parity.None;
        _SerialPort.DataBits = 8;
        _SerialPort.StopBits = StopBits.One;
        _SerialPort.Handshake = Handshake.None;
        _SerialPort.ReadTimeout = 500;
        _SerialPort.WriteTimeout = 500;
        _SerialPort.Open();
        _SerialPort.DataReceived += _serialPort_DataReceived;
    }

這是我的函數,它向設備發送查詢(常數Measurment_Value表示歐姆表可以理解的scpi命令):

public void get_measurement()
    {
        _SerialPort.WriteLine(Measurment_Value);
    }

這是私有功能,用於檢查設備是否正在發送數據並在控制台上打印數據(不確定此功能的工作方式):

private void _serialPort_DataReceived(object sender, SerialDataReceivedEventArgs e)
    {
        Console.WriteLine(_SerialPort.ReadLine());
    }

不幸的是,我無法將數據作為字符串返回。 我的目標是對接收到的數據進行一些計算。 有人有什么想法嗎?

來自德國的問候。

路加

您可以從緩沖區讀取臨時字節數組,然后將其作為字符串獲取,請參見以下示例。 把它放在_serialPort_DataReceived

    // this the read buffer
    byte[] buff = new byte[9600];
    int readByteCount = _serialPort.BaseStream.Read(buff, 0, _serialPort.BytesToRead);
    // you can specify other encodings, or use default
    string response = System.Text.Encoding.UTF8.GetString(buff);

邊注

如果要在使用SerialPort時保持理智,請始終以字節數組形式發送和接收。 然后,使用Encoding獲得等效的字符串。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM