void ServerCF::RecieveFromClient() { int numbytes = 0; char *msg = new char[500]; //Recv & print Data WSAAsyncSelect(ToClientSocket,g_pWindow,0,0); recv(ToClientSocket,msg,498,MSG_PEEK); numbytes = FindSign(msg,10); WSAAsyncSelect(ToClientSocket,g_pWindow,WM_SOCKET,(FD_CLOSE|FD_READ)); if(numbytes == -1) { numbytes = 498; } numbytes++; recv(ToClientSocket,msg,numbytes,0); // numbytes++; msg[numbytes]='\0'; //std::cout << msg << std::endl; if(numbytes > 0) { g_pMainWindow->SendMessage(msg); } delete msg; }
//--------------------------------------------------------------------------- //void __fastcall TSignRules::AddNewSigns(TDtaSource *data,TDictSource *dict) //{ //Data=data; //Dict=dict; //} //--------------------------------------------------------------------------- //пытаемся автоматически расставить знаки void __fastcall TSignRules::AutoCheck(TDtaSource *data,TDictSource *dict){ Data = data; Dict = dict; TRoadSign *tmpSign;//для проверки существования знака for (int i=0;i<data->Objects->Count;i++){ //примыкания ->> TRoadAttach *attach = dynamic_cast<TRoadAttach*>(Data->Objects->Items[i]); if (attach){//если это примыкание if(!IsInTownDescreet(attach)){//если не в населённом пункте switch(attach->Placement){//проверяем тип примыкания case apRight://примыкание справа if(CurrentRoadIsMain(attach)){ //добавляем три знака tmpSign = FindSign("2.3.2", attach->L - 30000, attach->L); if(!tmpSign){ Data->AddPrjSign(Dict, roDirect, spRight, attach->L - 15500, 200, "2.3.2", "", "Примыкание справа",false); } tmpSign = FindSign("2.3.3", attach->L, attach->L + 30000); if(!tmpSign){ Data->AddPrjSign(Dict, roUnDirect, spRight, attach->L + 15500, 200, "2.3.3", "", "Примыкание слева",false); } tmpSign = FindSign("2.4", attach->L - 500, attach->L + 500); if(!tmpSign){ Data->AddPrjSign(Dict, roDirect, spRight, attach->L, 2000, "2.4", "", "Уступи дорогу",true); } }else{ //если текущая дорога не главная } break; case apLeft://примыкание слева if(CurrentRoadIsMain(attach)){ //добавляем три знака tmpSign = FindSign("2.3.3", attach->L - 30000, attach->L); if(!tmpSign){ Data->AddPrjSign(Dict, roDirect, spRight, attach->L - 15500, 200, "2.3.3", "", "Примыкание слева",false); } tmpSign = FindSign("2.3.2", attach->L, attach->L + 30000); if(!tmpSign){ Data->AddPrjSign(Dict, roUnDirect, spRight, attach->L + 15500, 200, "2.3.2", "", "Примыкание справа",false); } tmpSign = FindSign("2.4", attach->L - 500, attach->L + 500); if(!tmpSign){ Data->AddPrjSign(Dict, roUnDirect, spRight, attach->L, 2000, "2.4", "", "Уступи дорогу",true); } }else{ //если текущая дорога не главная } break; case apCross://пересечение if(CurrentRoadIsMain(attach)){ //добавляем четыре знака tmpSign = FindSign("2.3.1", attach->L - 30000, attach->L); if(!tmpSign){ Data->AddPrjSign(Dict, roDirect, spRight, attach->L - 15500, 200, "2.3.1", "", "Пересечение со второстепенной дорогой",false); } tmpSign = FindSign("2.3.1", attach->L, attach->L + 30000); if(!tmpSign){ Data->AddPrjSign(Dict, roUnDirect, spRight, attach->L + 15500, 200, "2.3.1", "", "Пересечение со второстепенной дорогой",false); } tmpSign = FindSign("2.4", attach->L - 500, attach->L + 500); if(!tmpSign){ Data->AddPrjSign(Dict, roDirect, spRight, attach->L, 2000, "2.4", "", "Уступи дорогу",true); } tmpSign = FindSign("2.4", attach->L - 500, attach->L + 500); if(!tmpSign){ Data->AddPrjSign(Dict, roUnDirect, spRight, attach->L, 2000, "2.4", "", "Уступи дорогу",true); } }else{ //если текущая дорога не главная } break; } } } //примыкания <<- /* //НП ->> TTown *town = dynamic_cast<TTown*>(Data->Objects->Items[i]); if (town){//если это мост tmpSign = FindSign("5.22", town->LMin - 200 , town->LMin + 200); if(!tmpSign){ tmpSign = FindSign("5.24", town->LMin - 200 , town->LMin + 200); if(!tmpSign){ Data->AddPrjSign(Dict, roDirect, spRight, town->LMin, 200, "2.22", "", "Начало НП"); } } tmpSign = FindSign("5.23", town->LMin - 200 , town->LMin + 200); if(!tmpSign){ tmpSign = FindSign("5.25", town->LMin - 200 , town->LMin + 200); if(!tmpSign){ Data->AddPrjSign(Dict, roUnDirect, spLeft, town->LMin, 200, "2.24", "", "Конец НП"); } } tmpSign = FindSign("5.23", town->LMax - 200 , town->LMax + 200); if(!tmpSign){ tmpSign = FindSign("5.25", town->LMax - 200 , town->LMax + 200); if(!tmpSign){ Data->AddPrjSign(Dict, roUnDirect, spLeft, town->LMax, 200, "2.24", "", "Конец НП"); } } tmpSign = FindSign("5.22", town->LMax - 200 , town->LMax + 200); if(!tmpSign){ tmpSign = FindSign("5.24", town->LMax - 200 , town->LMax + 200); if(!tmpSign){ Data->AddPrjSign(Dict, roDirect, spRight, town->LMax, 200, "2.22", "", "Начало НП"); } } }*/ //НП <<- /* //мосты ->> TRoadBridge *bridge = dynamic_cast<TRoadBridge*>(Data->Objects->Items[i]); if (bridge){//если это мост //ставим знак сужения дороги, если он нужен //ставим знак "Ограничение массы", если нужно //ставим знак 5.26 "Наименование объекта", если нужно } //мосты <<- */ //автобусная остановка ->> TBusStop *busStop = dynamic_cast<TBusStop*>(Data->Objects->Items[i]); if (busStop){//если это автобусная остановка //ставим знаки автобусной остановки 5.12 tmpSign = FindSign("5.12", busStop->L - 200, busStop->L + 200); if(!tmpSign){ Data->AddPrjSign(Dict, roDirect, spRight, busStop->L, 200, "5.12", "", "Автобусная остановка.",false); } } //автобусная остановка <<- /* //переезд ->> /**TRailCross *railCross = dynamic_cast<TRailCross*>(Data->Objects->Items[i]); if (railCross){//если это переезд //определяем его направление (прямое/обратное) //ставим знаки //проверяем, есть шлагбаум или нет //... tmpSign = FindSign("5.12", railCross->L - 200, railCross->L + 200); if(!tmpSign){ } }*/ //переезд <<- } Data->AddFromBufer(); }
// Deadzone due to bad controllers float ApplyDZ(float axis, float deadzone) { return fabs(axis) < deadzone ? 0 : (fabs(axis) - deadzone) / (1 - deadzone) * FindSign(axis); }