UINT __stdcall elevator2(void *args) { while (1) { if (ps3.Read() > 0) { ps3.Wait(); sema_io_console.Wait(); MOVE_CURSOR(ELEV2_DISPLAYX, 10); printf("Elevator 2\n"); MOVE_CURSOR(ELEV2_DISPLAYX, 12); printf("\t\t\t\t\t"); MOVE_CURSOR(ELEV2_DISPLAYX, 12); if (MyDataPool2->general_status == 0) { printf("- Offline\n"); } else { printf("- Online\n"); } // clears elevator for (int i = 0; i < 10;i++) { MOVE_CURSOR(ELEV2_DISPLAYX, 10 + (13 - i)); printf("\t\t\t\t\t"); } // clears elevator for (int i = 0; i < 10;i++) { MOVE_CURSOR(ELEV2_DISPLAYX, 10 + (13 - i)); printf("__ __ F%d", i); } // displays elevator location MOVE_CURSOR(ELEV2_DISPLAYX, 10 + (13 - MyDataPool2->floor)); printf("[|_|] F%d", MyDataPool2->floor); sema_io_console.Signal(); cs3.Signal(); } } }
int main(){ while (endSimulation.Read() == 0){ switch (tank){ case 1: tank1_GSC_Can_Read.Wait(); break; case 2: tank2_GSC_Can_Read.Wait(); break; case 3: tank3_GSC_Can_Read.Wait(); break; case 4: tank4_GSC_Can_Read.Wait(); break; } unsigned int fuelAmount = *tankPtr; if (fuelAmount > 200){ GSCLogFileSemaphore.Wait(); printTime(); log_file << "******************\nTANK " << tank << ":\nAvailable amount (liters) = " << fuelAmount << "\n\n"; GSCLogFileSemaphore.Signal(); } else { GSCLogFileSemaphore.Wait(); printTime(); log_file << "******************\n"; log_file << "WARNING!!!\nTANK " << tank << ":\nAvailable amount (liters) = " << fuelAmount << "\nWARNING!!!" << "\n\n"; GSCLogFileSemaphore.Signal(); } } return 0; }
//************************************************************************************************************************************************** void printGSCScreen(){ while (endSimulation.Read() == 0){ system("cls"); cout << "REAL TIME STATUS:"; printTimeScreen(); // pumps for (int pump = 1; pump < 5; pump++){ pumpStatus *pumpPtr; switch (pump){ case 1: pumpPtr = pump1Ptr; break; case 2: pumpPtr = pump2Ptr; break; case 3: pumpPtr = pump3Ptr; break; case 4: pumpPtr = pump4Ptr; break; default: pumpPtr = NULL; break; } cout << "******************\nPUMP " << pump << ":\nCustomer Name = " << pumpPtr->customerName << "\nCredit Card = " << pumpPtr->customerCC << "\nFuel Type = " << pumpPtr->selectedFuel << "\nFuel Amount = " << pumpPtr->selectedFuelAmount << " liters\nTotal Price = CAD$" << pumpPtr->priceToPay << "\n"; switch (pumpPtr->status){ case 0: TEXT_COLOUR(GREEN); cout << "PUMP FREE\n\n"; TEXT_COLOUR(); break; case 1: TEXT_COLOUR(YELLOW); cout << "CUSTOMER SELECTING FUEL\n\n"; TEXT_COLOUR(); break; case 2: TEXT_COLOUR(DARK_YELLOW); cout << "CUSTOMER SELECTING FUEL AMOUNT\n\n"; TEXT_COLOUR(); break; case 3: TEXT_COLOUR(CYAN); cout << "DISPENSING FUEL\n\n"; TEXT_COLOUR(); break; case 4: TEXT_COLOUR(MAGENTA); cout << "WAITING FOR CUSTOMER TO GO AWAY\n\n"; TEXT_COLOUR(); break; case 5: TEXT_COLOUR(BLUE); cout << "WAITING FOR PAIMENT\n\n"; TEXT_COLOUR(); break; default: pumpPtr = NULL; break; } } // tanks for (int tank = 1; tank < 5; tank++) { unsigned int *tankPtr; switch (tank){ case 1: tankPtr = tank1Ptr; break; case 2: tankPtr = tank2Ptr; break; case 3: tankPtr = tank3Ptr; break; case 4: tankPtr = tank4Ptr; break; default: tankPtr = NULL; break; } unsigned int fuelAmount = *tankPtr; if (fuelAmount > 200){ cout << "******************\nTANK " << tank << ":\nAvailable amount (liters) = " << fuelAmount << "\n\n"; } else { cout << "******************\n"; TEXT_COLOUR(RED); cout << "WARNING!!!\nTANK " << tank << ":\nAvailable amount (liters) = " << fuelAmount << "\nWARNING!!!" << "\n\n"; TEXT_COLOUR(); } } SLEEP(FLASH_SPEED); } }
int main(){ switch (pump){ case 1: while (endSimulation.Read() == 0){ prodPool1.Wait(); GSCLogFileSemaphore.Wait(); if (log_file.is_open()){ printTime(); log_file << "******************\nPUMP 1:\nCustomer Name = " << pump1Ptr->customerName << "\nCredit Card = " << pump1Ptr->customerCC << "\nFuel Type = " << pump1Ptr->selectedFuel << "\nFuel Amount = " << pump1Ptr->selectedFuelAmount << " liters\nTotal Price = CAD$" << pump1Ptr->priceToPay << "\n\n"; } GSCLogFileSemaphore.Signal(); consPool1.Signal(); } break; case 2: while (endSimulation.Read() == 0){ prodPool2.Wait(); GSCLogFileSemaphore.Wait(); if (log_file.is_open()){ printTime(); log_file << "******************\nPUMP 2:\nCustomer Name = " << pump2Ptr->customerName << "\nCredit Card = " << pump2Ptr->customerCC << "\nFuel Type = " << pump2Ptr->selectedFuel << "\nFuel Amount = " << pump2Ptr->selectedFuelAmount << " liters\nTotal Price = CAD$" << pump2Ptr->priceToPay << "\n\n"; } GSCLogFileSemaphore.Signal(); consPool2.Signal(); } break; case 3: while (endSimulation.Read() == 0){ prodPool3.Wait(); GSCLogFileSemaphore.Wait(); if (log_file.is_open()){ printTime(); log_file << "******************\nPUMP 3:\nCustomer Name = " << pump3Ptr->customerName << "\nCredit Card = " << pump3Ptr->customerCC << "\nFuel Type = " << pump3Ptr->selectedFuel << "\nFuel Amount = " << pump3Ptr->selectedFuelAmount << " liters\nTotal Price = CAD$" << pump3Ptr->priceToPay << "\n\n"; } GSCLogFileSemaphore.Signal(); consPool3.Signal(); } break; case 4: while (endSimulation.Read() == 0){ prodPool4.Wait(); GSCLogFileSemaphore.Wait(); if (log_file.is_open()){ printTime(); log_file << "******************\nPUMP 4:\nCustomer Name = " << pump4Ptr->customerName << "\nCredit Card = " << pump4Ptr->customerCC << "\nFuel Type = " << pump4Ptr->selectedFuel << "\nFuel Amount = " << pump4Ptr->selectedFuelAmount << " liters\nTotal Price = CAD$" << pump4Ptr->priceToPay << "\n\n"; } GSCLogFileSemaphore.Signal(); consPool4.Signal(); } break; default: printf("infalid pump\n"); break; } return 0; }
UINT __stdcall IOToElevator2(void *args) { CDataPool dp2("Ele2", sizeof(struct myDpData)) ; struct myDpData *Ele2DP = (struct myDpData *)(dp2.LinkDataPool()) ; while(flag) { if (ps3.Read()>0) { ps3.Wait(); m1->Wait(); Ele2Status = *Ele2DP; m1->Signal(); cs3.Signal(); } m1->Wait(); //FLOOR 9 MOVE_CURSOR(29,1); printf(" |"); if (Ele2Status.floor == 9) printf("._."); else printf(" "); printf("| "); MOVE_CURSOR(29,2); printf(" |"); if (Ele2Status.floor == 9) { printf("|"); if (Ele2Status.door == OPEN) printf("O"); else printf("-"); printf("|"); } else printf(" "); printf("| "); MOVE_CURSOR(29,3); printf(" |"); if (Ele2Status.floor == 9) printf("^-^"); else printf(" "); printf("| "); //FLOOR 8 MOVE_CURSOR(29,5); printf(" |"); if (Ele2Status.floor == 8) printf("._."); else printf(" "); printf("| "); MOVE_CURSOR(29,6); printf(" |"); if (Ele2Status.floor == 8) { printf("|"); if (Ele2Status.door == OPEN) printf("O"); else printf("-"); printf("|"); } else printf(" "); printf("| "); MOVE_CURSOR(29,7); printf(" |"); if (Ele2Status.floor == 8) printf("^-^"); else printf(" "); printf("| "); //FLOOR 7 MOVE_CURSOR(29,9); printf(" |"); if (Ele2Status.floor == 7) printf("._."); else printf(" "); printf("| "); MOVE_CURSOR(29,10); printf(" |"); if (Ele2Status.floor == 7) { printf("|"); if (Ele2Status.door == OPEN) printf("O"); else printf("-"); printf("|"); } else printf(" "); printf("| "); MOVE_CURSOR(29,11); printf(" |"); if (Ele2Status.floor == 7) printf("^-^"); else printf(" "); printf("| "); //FLOOR 6 MOVE_CURSOR(29,13); printf(" |"); if (Ele2Status.floor == 6) printf("._."); else printf(" "); printf("| "); MOVE_CURSOR(29,14); printf(" |"); if (Ele2Status.floor == 6) { printf("|"); if (Ele2Status.door == OPEN) printf("O"); else printf("-"); printf("|"); } else printf(" "); printf("| "); MOVE_CURSOR(29,15); printf(" |"); if (Ele2Status.floor == 6) printf("^-^"); else printf(" "); printf("| "); //FLOOR 5 MOVE_CURSOR(29,17); printf(" |"); if (Ele2Status.floor == 5) printf("._."); else printf(" "); printf("| "); MOVE_CURSOR(29,18); printf(" |"); if (Ele2Status.floor == 5) { printf("|"); if (Ele2Status.door == OPEN) printf("O"); else printf("-"); printf("|"); } else printf(" "); printf("| "); MOVE_CURSOR(29,19); printf(" |"); if (Ele2Status.floor == 5) printf("^-^"); else printf(" "); printf("| "); //FLOOR 4 MOVE_CURSOR(29,21); printf(" |"); if (Ele2Status.floor == 4) printf("._."); else printf(" "); printf("| "); MOVE_CURSOR(29,22); printf(" |"); if (Ele2Status.floor == 4) { printf("|"); if (Ele2Status.door == OPEN) printf("O"); else printf("-"); printf("|"); } else printf(" "); printf("| "); MOVE_CURSOR(29,23); printf(" |"); if (Ele2Status.floor == 4) printf("^-^"); else printf(" "); printf("| "); //FLOOR 3 MOVE_CURSOR(29,25); printf(" |"); if (Ele2Status.floor == 3) printf("._."); else printf(" "); printf("| "); MOVE_CURSOR(29,26); printf(" |"); if (Ele2Status.floor == 3) { printf("|"); if (Ele2Status.door == OPEN) printf("O"); else printf("-"); printf("|"); } else printf(" "); printf("| "); MOVE_CURSOR(29,27); printf(" |"); if (Ele2Status.floor == 3) printf("^-^"); else printf(" "); printf("| "); //FLOOR 2 MOVE_CURSOR(29,29); printf(" |"); if (Ele2Status.floor == 2) printf("._."); else printf(" "); printf("| "); MOVE_CURSOR(29,30); printf(" |"); if (Ele2Status.floor == 2) { printf("|"); if (Ele2Status.door == OPEN) printf("O"); else printf("-"); printf("|"); } else printf(" "); printf("| "); MOVE_CURSOR(29,31); printf(" |"); if (Ele2Status.floor == 2) printf("^-^"); else printf(" "); printf("| "); //FLOOR 1 MOVE_CURSOR(29,33); printf(" |"); if (Ele2Status.floor == 1) printf("._."); else printf(" "); printf("| "); MOVE_CURSOR(29,34); printf(" |"); if (Ele2Status.floor == 1) { printf("|"); if (Ele2Status.door == OPEN) printf("O"); else printf("-"); printf("|"); } else printf(" "); printf("| "); MOVE_CURSOR(29,35); printf(" |"); if (Ele2Status.floor == 1) printf("^-^"); else printf(" "); printf("| "); //FLOOR 0 MOVE_CURSOR(29,37); printf(" |"); if (Ele2Status.floor == 0) printf("._."); else printf(" "); printf("| "); MOVE_CURSOR(29,38); printf(" |"); if (Ele2Status.floor == 0) { printf("|"); if (Ele2Status.door == OPEN) printf("O"); else printf("-"); printf("|"); } else printf(" "); printf("| "); MOVE_CURSOR(29,39); printf(" |"); if (Ele2Status.floor == 0) printf("^-^"); else printf(" "); printf("| "); MOVE_CURSOR(29,41); printf(" Ele2"); MOVE_CURSOR(36,42); for (int i = 7; i < 10; i++) { if (Ele2Status.lights[i] == 1) { TEXT_COLOUR(14); } printf("[%d] ", i); TEXT_COLOUR(7); } MOVE_CURSOR(36,43); for (int i = 4; i < 7; i++) { if (Ele2Status.lights[i] == 1) { TEXT_COLOUR(14); } printf("[%d] ", i); TEXT_COLOUR(7); } MOVE_CURSOR(36,44); for (int i = 1; i < 4; i++) { if (Ele2Status.lights[i] == 1) { TEXT_COLOUR(14); } printf("[%d] ", i); TEXT_COLOUR(7); } MOVE_CURSOR(40,45); if (Ele2Status.lights[0] == 1) { TEXT_COLOUR(14); } printf("[0]"); TEXT_COLOUR(7); fflush(stdout); MOVE_CURSOR(0,50); fflush(stdout); m1->Signal(); SLEEP(1); } return 0 ; }
UINT __stdcall IOToElevator1(void *args) { CDataPool dp1("Ele1", sizeof(struct myDpData)) ; struct myDpData *Ele1DP = (struct myDpData *)(dp1.LinkDataPool()); while(flag) { if (ps1.Read()>0) { ps1.Wait(); m1->Wait(); Ele1Status = *Ele1DP; m1->Signal(); cs1.Signal(); } //FLOOR 9 m1->Wait(); MOVE_CURSOR(0,1); printf(" |"); if (Ele1Status.floor == 9) printf("._."); else printf(" "); printf("| "); MOVE_CURSOR(0,2); printf("Floor 9 |"); if (Ele1Status.floor == 9) { printf("|"); if (Ele1Status.door == OPEN) printf("O"); else printf("-"); printf("|"); } else printf(" "); printf("| "); MOVE_CURSOR(0,3); printf(" |"); if (Ele1Status.floor == 9) printf("^-^"); else printf(" "); printf("| "); //FLOOR 8 MOVE_CURSOR(0,5); printf(" |"); if (Ele1Status.floor == 8) printf("._."); else printf(" "); printf("| "); MOVE_CURSOR(0,6); printf("Floor 8 |"); if (Ele1Status.floor == 8) { printf("|"); if (Ele1Status.door == OPEN) printf("O"); else printf("-"); printf("|"); } else printf(" "); printf("| "); MOVE_CURSOR(0,7); printf(" |"); if (Ele1Status.floor == 8) printf("^-^"); else printf(" "); printf("| "); //FLOOR 7 MOVE_CURSOR(0,9); printf(" |"); if (Ele1Status.floor == 7) printf("._."); else printf(" "); printf("| "); MOVE_CURSOR(0,10); printf("Floor 7 |"); if (Ele1Status.floor == 7) { printf("|"); if (Ele1Status.door == OPEN) printf("O"); else printf("-"); printf("|"); } else printf(" "); printf("| "); MOVE_CURSOR(0,11); printf(" |"); if (Ele1Status.floor == 7) printf("^-^"); else printf(" "); printf("| "); //FLOOR 6 MOVE_CURSOR(0,13); printf(" |"); if (Ele1Status.floor == 6) printf("._."); else printf(" "); printf("| "); MOVE_CURSOR(0,14); printf("Floor 6 |"); if (Ele1Status.floor == 6) { printf("|"); if (Ele1Status.door == OPEN) printf("O"); else printf("-"); printf("|"); } else printf(" "); printf("| "); MOVE_CURSOR(0,15); printf(" |"); if (Ele1Status.floor == 6) printf("^-^"); else printf(" "); printf("| "); //FLOOR 5 MOVE_CURSOR(0,17); printf(" |"); if (Ele1Status.floor == 5) printf("._."); else printf(" "); printf("| "); MOVE_CURSOR(0,18); printf("Floor 5 |"); if (Ele1Status.floor == 5) { printf("|"); if (Ele1Status.door == OPEN) printf("O"); else printf("-"); printf("|"); } else printf(" "); printf("| "); MOVE_CURSOR(0,19); printf(" |"); if (Ele1Status.floor == 5) printf("^-^"); else printf(" "); printf("| "); //FLOOR 4 MOVE_CURSOR(0,21); printf(" |"); if (Ele1Status.floor == 4) printf("._."); else printf(" "); printf("| "); MOVE_CURSOR(0,22); printf("Floor 4 |"); if (Ele1Status.floor == 4) { printf("|"); if (Ele1Status.door == OPEN) printf("O"); else printf("-"); printf("|"); } else printf(" "); printf("| "); MOVE_CURSOR(0,23); printf(" |"); if (Ele1Status.floor == 4) printf("^-^"); else printf(" "); printf("| "); //FLOOR 3 MOVE_CURSOR(0,25); printf(" |"); if (Ele1Status.floor == 3) printf("._."); else printf(" "); printf("| "); MOVE_CURSOR(0,26); printf("Floor 3 |"); if (Ele1Status.floor == 3) { printf("|"); if (Ele1Status.door == OPEN) printf("O"); else printf("-"); printf("|"); } else printf(" "); printf("| "); MOVE_CURSOR(0,27); printf(" |"); if (Ele1Status.floor == 3) printf("^-^"); else printf(" "); printf("| "); //FLOOR 2 MOVE_CURSOR(0,29); printf(" |"); if (Ele1Status.floor == 2) printf("._."); else printf(" "); printf("| "); MOVE_CURSOR(0,30); printf("Floor 2 |"); if (Ele1Status.floor == 2) { printf("|"); if (Ele1Status.door == OPEN) printf("O"); else printf("-"); printf("|"); } else printf(" "); printf("| "); MOVE_CURSOR(0,31); printf(" |"); if (Ele1Status.floor == 2) printf("^-^"); else printf(" "); printf("| "); //FLOOR 1 MOVE_CURSOR(0,33); printf(" |"); if (Ele1Status.floor == 1) printf("._."); else printf(" "); printf("| "); MOVE_CURSOR(0,34); printf("Floor 1 |"); if (Ele1Status.floor == 1) { printf("|"); if (Ele1Status.door == OPEN) printf("O"); else printf("-"); printf("|"); } else printf(" "); printf("| "); MOVE_CURSOR(0,35); printf(" |"); if (Ele1Status.floor == 1) printf("^-^"); else printf(" "); printf("| "); //FLOOR 0 MOVE_CURSOR(0,37); printf(" |"); if (Ele1Status.floor == 0) printf("._."); else printf(" "); printf("| "); MOVE_CURSOR(0,38); printf("Floor 0 |"); if (Ele1Status.floor == 0) { printf("|"); if (Ele1Status.door == OPEN) printf("O"); else printf("-"); printf("|"); } else printf(" "); printf("| "); MOVE_CURSOR(0,39); printf(" |"); if (Ele1Status.floor == 0) printf("^-^"); else printf(" "); printf("| "); MOVE_CURSOR(0,41); printf("Buttons in Ele1"); MOVE_CURSOR(7,42); for (int i = 7; i < 10; i++) { if (Ele1Status.lights[i] == 1) { TEXT_COLOUR(14); } printf("[%d] ", i); TEXT_COLOUR(7); } MOVE_CURSOR(7,43); for (int i = 4; i < 7; i++) { if (Ele1Status.lights[i] == 1) { TEXT_COLOUR(14); } printf("[%d] ", i); TEXT_COLOUR(7); } MOVE_CURSOR(7,44); for (int i = 1; i < 4; i++) { if (Ele1Status.lights[i] == 1) { TEXT_COLOUR(14); } printf("[%d] ", i); TEXT_COLOUR(7); } MOVE_CURSOR(11,45); if (Ele1Status.lights[0] == 1) { TEXT_COLOUR(14); } printf("[0]"); TEXT_COLOUR(7); //printf("Ele1 Read value for Floor = %d \n", Ele1Status.floor) ; //printf("Ele1 Read value for Usage = %d \n", Ele1Status.usage); //printf("Ele1 Read value for Door = %d \n", Ele1Status.direction) ; //printf("Ele1 Read value for Direction = %d \n", Ele1Status.direction) ; //printf("Ele1 Read values for floor array = ") ; //for(int i=0; i < 10; i ++) { // printf("%d ", Ele1Status.floors[i]) ; //} fflush(stdout); MOVE_CURSOR(0,50); fflush(stdout); m1->Signal(); SLEEP(10); } return 0 ; }