[英]Problem in C# reading four bytes of unsigned binary number from serial port
我正在嘗試在 C# 中編寫 GUI,以通過 UART 將 FPGA 連接到 PC。 在 FPGA 端,我使用 32 位無符號數據類型:
data_to_uart : out unsigned(31 downto 0);
data_to_uart <= to_unsigned(1000, 32);
然后我的 FPGA 設計中的 data_to_uart 進入塊,將這個 32 位無符號數拆分為 4 個字節,並通過 UART 將它們一一發送。 所以在終端我收到以下信息(值應該是:1000):
00000000 00000000 00000011 11101000
我的問題是:如何使用System.IO.Ports 在 c# 中正確讀取這四個字節; 並將其轉換為 int(做一些數學運算),然后轉換為字符串 - 在 label 上顯示值。
目前我正在使用:
inputData = serialPort1.ReadExisting();
以下: 二進制到十進制轉換示例對我不起作用,因為.ReadExisting 正在返回 String:(
我看了看這個:
Microsoft Docs - SerialPort 方法
我必須使用 SerialPort.ReadByte 方法嗎? 有人說它只讀取一個字節,如何讀取所有四個然后轉換為int?
我正在使用:波特率 - 115200,8 位和 1 個停止位。
感謝您的關注,也許還有一些建議。 :)
正如其他人所說,您應該使用協議。 但是要回答這個問題:
if (serialPort1.ReadBufferSize >= 4)
{
var buffer = new byte[4];
for (int i = 3; i >= 0; --i)
buffer[i] = (byte)serialPort1.ReadByte();
int myNumber = BitConverter.ToInt32(buffer, 0);
}
這將從串行端口讀取四個字節並將它們轉換為 integer 變量。 請注意,緩沖區是向后填充的,因為您將二進制文件發送到 big-endian。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.