No se puede enviar un número de dos dígitos utilizando realterm a xilinx microblaze a través del puerto serie

0

Estoy usando el ejemplo predeterminado que se puede encontrar aquí .

La parte del código que me interesa es la siguiente:

#define TEST_BUFFER_SIZE        16


u8 SendBuffer[TEST_BUFFER_SIZE];
u8 ReceiveBuffer[TEST_BUFFER_SIZE];



for (Index = 0; Index < TEST_BUFFER_SIZE; Index++) {
    SendBuffer[Index] = Index;
    ReceiveBuffer[Index] = 0;
}


XUartLite_Recv(&UartLite, ReceiveBuffer, TEST_BUFFER_SIZE); 
XUartLite_Send(&UartLite, SendBuffer, TEST_BUFFER_SIZE);


while ((TotalReceivedCount != TEST_BUFFER_SIZE) ||
    (TotalSentCount != TEST_BUFFER_SIZE)) {
}


for (Index = 0; Index < TEST_BUFFER_SIZE; Index++) {
    if (ReceiveBuffer[Index] != SendBuffer[Index]) {
        return XST_FAILURE;
    }
}

El búfer puede contener valores de 1 byte de largo. Usando realterm, envío un archivo de texto que contiene valores como:

  

0 12 3 4 56 7 8 91

pero lo que leí en ReceiveBuffer es '0', '', '1', '2', '' ... etc Sé que envía caracteres ASCII porque durante la depuración veo que SendBuffer envía caracteres como '\ r', '\ f' que mi terminal traduce como números, pero ¿cómo envío un número de dos dígitos?

    
pregunta bluej

1 respuesta

1

Un byte puede estar entre 0 y 255. Si envía, por ejemplo, el decimal 65, entonces el sistema lo traducirá a 'A'. Una vez que haya recibido el byte, 'A', simplemente conviértalo en un entero con (unsigned int) ReceiveBuffer [i]. Obtendrás 65.

Otro enfoque sería dividir el número de 2 dígitos en los dígitos y enviar cada dígito respectivamente.

    
respondido por el Rohat Kılıç

Lea otras preguntas en las etiquetas