Other Parts Discussed in Thread: UNIFLASH
I ran some tests with the default UART and sent 200 characters and received them on my Visual Studios serial port listener, however when I use the following code to build a buffer (not using the strcpy method from the example), the UART sends a seemingly random lower amount of characters. In this code it should send at least 200 characters with a value of 1 but instead it sends 105. If I change trans.count to 1024 it sends 252.
The system config is the exact same as the UART echo example. I will also attach my VS code for the listener but my previous paragraph should demonstrate its probably not VSCode.
// Copy Stream to the UART Buffer for(i = 0; i < 1024; i++) { gUartBuffer[i] = (uint8_t)1; } // Send UART Stream UART_Transaction_init(&trans); trans.buf = &gUartBuffer[0U]; trans.count = (size_t)200; transferOK = UART_write(gUartHandle[CONFIG_UART_CONSOLE], &trans); APP_UART_ASSERT_ON_FAILURE(transferOK, trans);
std::cout << "COM Listener\n"; int ch = 0; char buffer[1]; /* ... */ // Open serial port HANDLE serialHandle; serialHandle = CreateFile(L"\\\\.\\COM6", GENERIC_READ | GENERIC_WRITE, 0, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0); // Do some basic settings DCB serialParams = { 0 }; serialParams.DCBlength = sizeof(serialParams); GetCommState(serialHandle, &serialParams); serialParams.BaudRate = 115200; serialParams.ByteSize = 8; serialParams.StopBits = ONESTOPBIT; serialParams.Parity = NOPARITY; SetCommState(serialHandle, &serialParams); // Set timeouts COMMTIMEOUTS timeout = { 0 }; DWORD read, written; HANDLE keyboard = GetStdHandle(STD_INPUT_HANDLE); HANDLE screen = GetStdHandle(STD_OUTPUT_HANDLE); timeout.ReadIntervalTimeout = 50; timeout.ReadTotalTimeoutConstant = 50; timeout.ReadTotalTimeoutMultiplier = 50; timeout.WriteTotalTimeoutConstant = 50; timeout.WriteTotalTimeoutMultiplier = 10; SetCommTimeouts(serialHandle, &timeout); // basic terminal loop: do { ReadFile(serialHandle, buffer, sizeof(buffer), &read, NULL); WriteFile(screen, buffer, read, &written, NULL); } while (streaming != -1); CloseHandle(serialHandle);