Windos port and PC uart

joe_her wrote on Thursday, March 30, 2017:

I wonder if there is a recomanded way to use windows PC uart with FreeRTOS.
I am trying the FILE way, but having problems with it:
//---------------------
hComm = CreateFile( ComPortName, // Name of the Port to be Opened
GENERIC_READ | GENERIC_WRITE, // Read/Write Access
0, // No Sharing, ports cant be shared
NULL, // No Security
OPEN_EXISTING, // Open existing port only
0, // Non Overlapped I/O
NULL); // Null for Comm Devices
.
.
.
Status = ReadFile(hComm, &TempChar, sizeof(TempChar), &NoBytesRead, NULL);
.
.
etc…
//----------------------------
Thanks
Johanan

heinbali01 wrote on Thursday, March 30, 2017:

Here is a recent post about the Windows port of FreeRTOS. It says that you should never call any Windows API from within a FreeRTOS task. Likewise, you can not call a FreeRTOS API from within a Windows thread.

Please have a look at demo_logging.c (also mentioned in that post): it is a normal Windows thread that does call normal API’s. And as I explained, it is difficult to realise communication and synchronisation between a Windows thread and a FreeRTOS task.

You could write something like in demo_logging.c, in which you get access to a serial port.

Try to work with FILE_FLAG_OVERLAPPED :

	handle = CreateFile(
		useName,
		GENERIC_READ|GENERIC_WRITE,
		0,
		NULL,
		OPEN_EXISTING,
		FILE_ATTRIBUTE_SYSTEM | FILE_FLAG_OVERLAPPED,
		NULL);

The actual access is done with WriteFile() and ReadFile().

joe_her wrote on Friday, March 31, 2017:

Got it working.
Thanks.

heinbali01 wrote on Friday, March 31, 2017:

You are quick !
Thanks for reporting back. Hein