簡體   English   中英

從串口讀取的標准方法是什么

[英]What is the standard method for reading from Serial Port

我有一個測試用例,我需要讀取串行總線 (RS-232) 上的文本。 這個文本實際上是嵌入式PC開機時的文本output。 然后,我需要為某些令牌解析該文本 output。 我正在嘗試開發一種解決此問題的通用方法。 這是我的方法:

配置 COM 端口 打開/創建文件以將文本寫入 將從端口讀取的字節寫入文件 此處有任何指針可以幫助我,或者您認為缺少什么? 對於 function ComToFile,我不確定參數“終止字節”使用什么,因為我還不知道整個文本是什么樣的。 是否有默認值可以輸入 function 以不使用該方法?

注意:不需要 UI,這是用於自動化測試。 另外,我正在討論是否應該將引導文本寫入文件,然后像我所做的那樣解析該文件中的令牌,或者最好將其存儲在程序內的一個大緩沖區中並解析該緩沖區?

#include <formatio.h>
#include<stdio.h>
#include<string.h>
#include<rs232.h>

#define PORT_NUMBER 1
#define BUFFER_SIZE 10000

int main (void)
{
    
    char buffer[BUFFER_SIZE];
    int bytes = 100;
    int fileHandle;
    int status;
    
    if (0  > (OpenComConfig(PORT_NUMBER, "COM1", 115200, 0, 7, 1, 5000, 512)))   //Opens connection to COM port, closes program if error code returned
    {
        printf("Error: COM port could not be opened\n");
        return -1;
    }
    
    fileHandle = OpenFile ("BootText.txt", VAL_READ_WRITE, VAL_TRUNCATE, VAL_ASCII);
    status = SetComTime(PORT_NUMBER, 10);
    bytes =  ComToFile(PORT_NUMBER, fileHandle, 2000, 0x0D);     
    
    return 0;

}

 

我正在爭論是否應該將啟動文本寫入文件,然后像我所做的那樣解析該文件中的令牌,或者最好將其存儲在程序內的一個大緩沖區中並解析該緩沖區?

如果您要解析的文本不是那么大,只需使用您創建但未使用的 10000 個字符緩沖區。 另外,如果此文本在解析后沒有相關用途,每次啟動時都會更改並且可以丟棄,然后不要使用文件。 文件只能用於“永久”存儲數據

對於 function ComToFile,我不確定參數“終止字節”使用什么,因為我還不知道整個文本是什么樣的。

終止字符用於在計數之前停止讀取:例如,如果您知道要讀取最多 1000 行但只讀取一行(因此要在 '\r' 處停止)或者如果您不知道長度您將閱讀的消息的數量(在這種情況下,將 0 放入“計數”中)。 因此,如果您知道您將始終讀取 2000 個字節並且始終有 2000 個字節可用,這並不重要。 但使用 EOT 永遠不會受到傷害。

暫無
暫無

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

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