[英]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.