/*~+:DWORD WINAPI ThreadCOMGps*/ //------------------------------------------------------------------------- DWORD WINAPI ThreadCOMGps(void *unused) // COM1-Thread { char rstring[21]; while(TRUE) { DWORD wait = WaitForSingleObject(hTransmitToCOMGpsSema, 1000); // Timeout every second if(WAIT_TIMEOUT == wait) { SendStringToCOM("DIES IST EIN TEST", TRUE); x=GetStringFromCOM(rstring, TRUE); pMsgHandler->PrLog("x>>%d\n", x); // für Test pMsgHandler->PrLog("WaitForSingleObject>>%d\n", wait); // für Test } else { break; } } return 0; } int CGPSMOUSE::Install_ThreadCOMGps(void) { DWORD threadId; char ReceivedFromCOMEvent[] = "ReceivedFromCOMEvent"; char TransmitToCOMSema[] = "TransmitToCOMSema"; char ReadyFromCOMEvent[] = "ReadyFromCOMEvent"; if ((hReceivedFromCOMEvent = CreateEvent(NULL, FALSE, FALSE, ReceivedFromCOMEvent)) == NULL) // create auto-reset event used by IRQSCT { pMsgHandler->BuildMsg( MSG_CannotCreateEvent, HTG_ERR2LOG_FATAL, szINTERNAL_ID, ReceivedFromCOMEvent ); // construct error message and put in pErrMessage return(2); } if ((hTransmitToCOMGpsSema = CreateSemaphore(NULL, 0, 50, TransmitToCOMSema)) == NULL) // create semaphore used for queing { pMsgHandler->BuildMsg( MSG_CannotCreateObject, HTG_ERR2LOG_FATAL, szINTERNAL_ID, TransmitToCOMSema ); // construct error message and put in pErrMessage return(3); } // Init RS232 InitUART(0x3F8, 4); /*set up UART and Interrupt Handler to COM1*/ pg->SetupRegisterVal |= RS_ON; // switch RS232-driver on pg->SetupRegisterVal &= ~RS485; // switch to RS232 / not RS485 EtsOutpw(SETUP_BASE_IO, pg->SetupRegisterVal); // write out hThreadCOMGps = CreateThread(NULL, ThreadCOM_STACK_SIZEGps, ThreadCOMGps, 0, 0, &threadId); if (hThreadCOMGps== NULL) { pMsgHandler->PrLog("Install_ThreadCOM: CreateThread(ThreadCOMGps)"); // construct error message and put in pErrMessage return(6); } if(INVALID_HANDLE_VALUE == hThreadCOMGps) { pMsgHandler->PrLog("COM PORT COULD NOT OPEND"); } return 0; }