Каков стандартный метод чтения с последовательного порта

#cvi #labwindows

#cvi #labwindows

Вопрос:

У меня есть тестовый пример, в котором мне нужно прочитать текст, поступающий по последовательной шине (RS-232). Этот текст на самом деле является текстом, выводимым встроенным ПК при загрузке. Затем мне нужно проанализировать этот текстовый вывод для определенных токенов. Я пытаюсь разработать общий подход к этой проблеме. Вот мой подход:

Настройте COM-порт, откройте / создайте файл, чтобы записать текст для записи байтов, прочитанных из порта в файл, Какие-либо указатели здесь, чтобы помочь мне, или что-нибудь, что, по вашему мнению, отсутствует? Для функции ComToFile я не уверен, что использовать для параметра «байт завершения», потому что я еще не знаю, как выглядит текст целиком. Есть ли значение по умолчанию для ввода в эту функцию, чтобы не использовать этот метод?

ПРИМЕЧАНИЕ: Пользовательский интерфейс не требуется, это для автоматического тестирования. Кроме того, я обсуждаю, должен ли я записать загрузочный текст в файл, а затем проанализировать токены из этого файла, как я это сделал, или лучше просто сохранить его в большом буфере внутри программы и проанализировать этот буфер?

 #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 openedn");
        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;

}

 
 

Ответ №1:

Я обсуждаю, должен ли я записать загрузочный текст в файл, а затем проанализировать токены из этого файла, как я это сделал, или лучше просто сохранить его в большом буфере в программе и проанализировать этот буфер?

Если ваш текст для анализа не такой большой, просто используйте буфер на 10000 символов, который вы создали, но не используете. Кроме того, если этот текст не используется после анализа, изменяется при каждом запуске и может быть удален, тогда не используйте файл. файл следует использовать только для «постоянного» хранения данных

Для функции ComToFile я не уверен, что использовать для параметра «байт завершения», потому что я еще не знаю, как выглядит текст целиком.

символ завершения используется для остановки чтения перед подсчетом: для примера, если вы знаете, что хотите прочитать до 1000, но читаете только одну строку (так, чтобы остановиться на ‘ r’) или если вы не знаете длину сообщения, которое вы будете читать (в этом случае поместите0 в ‘count’). Так что на самом деле не имеет значения, знаете ли вы, что вы всегда будете читать 2000 байт и что всегда будет доступно 2000 байт. но использование EOT никогда не повредит.