コード例 #1
0
ファイル: util.c プロジェクト: Metabolix/HackBGRT
EFI_INPUT_KEY ReadKey(void) {
	WaitKey();
	EFI_INPUT_KEY key = {0};
	ST->ConIn->ReadKeyStroke(ST->ConIn, &key);
	return key;
}
コード例 #2
0
ファイル: PrinterTest.c プロジェクト: RandolphWang1/huanhong
int PrinterBLTest()
{
	int   i, ret=0;  
	CHAR  PrintBuff[100]; 
	char  buff[64];  
	int   num;

	Clear();
	SetScrFont(FONT20, WHITE);
	TextOut(0, 2, ALIGN_CENTER, "打印测试");
	TextOut(0, 4, ALIGN_LEFT, "请输入打印张数:(1-999)");

	memset(buff, 0, sizeof(buff));
	SetScrFont(FONT20, RED);
	ret = Input(22, 4, buff, 3, IME_NUMBER, BLACK, GREEN, FALSE, FALSE, FALSE);
	if(ret != OK)
	{
		FailBeep(); 
		ClearLine(1, 9);
		SetScrFont(FONT20, WHITE);
		TextOut(0, 4, ALIGN_CENTER, "打印失败");
		WaitKey(2000);

		return ERROR;
	}
	num = atoi(buff);
	DebugOut("打印张数:[%d]\n", num);

	for (i = 0; i < num; i ++)
	{
START_PRINT:
		if(CheckPrinter() != TRUE)
			goto end1;

		printf("启动黑标打印功能\n");
		ret =  BmSwitch(1);
		printf("ret = %d\n", ret);
		if (0 != ret)
		{
			printf("启动失败\n");
			return 0;
		}
		MoveDotLine(4000);
		// 或者直接两个黑标之间的距离

		//清空打印缓冲区
		ClearPrintBuff();
		//设置打印字体大小

		SetPrintFont(48);  
		memset(PrintBuff, 0x00, sizeof(PrintBuff));
		strcpy(PrintBuff, "ABCDEFGHIJKLMNOPQRSTUVWX");
		ret = FillPrintBuff(PrintBuff);
		if(ret < 0)
			goto end1;             
		SetPrintFont(48);  
		memset(PrintBuff, 0x00, sizeof(PrintBuff));
		strcpy(PrintBuff, "123456789012345678");
		ret = FillPrintBuff(PrintBuff);
		if(ret < 0)
			goto end1;             
		ret = FillPrintBuff("PL");
		if(ret < 0)
			goto end1;
		SetPrintIndent(0); 

		//开始打印    
		ret =StartPrint();
		DebugOut("print error code:[%d]\n", ret);
		if(ret != 0)
		{
			if(ret == -1)
				goto START_PRINT;
			else if(ret == -2)
				goto end2;
			else if(ret == -3)
				goto end1;
		}
		
		
	}
	if(ret==0)
	{
		ClearLine(1,  9);
		TextOut(0,  4, ALIGN_CENTER,  "打印成功");
		WaitKey(1000);
	}
	else
	{
		ClearLine(1,  9);
		TextOut(0,  4, ALIGN_CENTER,  "打印失败");
		WaitKey(1000);
	}

	OkBeep();
	return OK;

end1:  

	FailBeep(); 
	ClearLine(1, 9);
	TextOut(0, 3, ALIGN_CENTER, "请检查打印机"); 
	TextOut(0, 4, ALIGN_CENTER, "打印失败");
	WaitKey(2000);

	return ERROR;

end2:  

	FailBeep(); 
	ClearLine(1, 9);
	TextOut(0, 3, ALIGN_CENTER, "电量不足"); 
	TextOut(0, 4, ALIGN_CENTER, "无法执行打印");
	WaitKey(2000);

	return ERROR;
}
コード例 #3
0
ファイル: fileview.cpp プロジェクト: elfmz/far2l
int FileViewer::ProcessKey(int Key)
{
	if (RedrawTitle && (((unsigned int)Key & 0x00ffffff) < KEY_END_FKEY || IS_INTERNAL_KEY_REAL((unsigned int)Key & 0x00ffffff)))
		ShowConsoleTitle();

	if (Key!=KEY_F3 && Key!=KEY_IDLE)
		F3KeyOnly=false;

	switch (Key)
	{
#if 0
			/* $ 30.05.2003 SVS
			   Фича :-) Shift-F4 в редакторе/вьювере позволяет открывать другой редактор/вьювер
			   Пока закомментим
			*/
		case KEY_SHIFTF4:
		{
			if (!Opt.OnlyEditorViewerUsed)
				CtrlObject->Cp()->ActivePanel->ProcessKey(Key);

			return TRUE;
		}
#endif
		/* $ 22.07.2000 tran
		   + выход по ctrl-f10 с установкой курсора на файл */
		case KEY_CTRLF10:
		{
			if (View.isTemporary())
			{
				return TRUE;
			}

			SaveScreen Sc;
			FARString strFileName;
			View.GetFileName(strFileName);
			CtrlObject->Cp()->GoToFile(strFileName);
			RedrawTitle = TRUE;
			return (TRUE);
		}
		// $ 15.07.2000 tran + CtrlB switch KeyBar
		case KEY_CTRLB:
			Opt.ViOpt.ShowKeyBar=!Opt.ViOpt.ShowKeyBar;

			if (Opt.ViOpt.ShowKeyBar)
				ViewKeyBar.Show();
			else
				ViewKeyBar.Hide0(); // 0 mean - Don't purge saved screen

			Show();
			KeyBarVisible = Opt.ViOpt.ShowKeyBar;
			return (TRUE);
		case KEY_CTRLSHIFTB:
		{
			Opt.ViOpt.ShowTitleBar=!Opt.ViOpt.ShowTitleBar;
			TitleBarVisible = Opt.ViOpt.ShowTitleBar;
			Show();
			return (TRUE);
		}
		case KEY_CTRLO:

			if (!Opt.OnlyEditorViewerUsed)
			{
				if (FrameManager->ShowBackground())
				{
					SetCursorType(FALSE,0);
					WaitKey();
					FrameManager->RefreshFrame();
				}
			}

			return TRUE;
		case KEY_F3:
		case KEY_NUMPAD5:  case KEY_SHIFTNUMPAD5:

			if (F3KeyOnly)
				return TRUE;

		case KEY_ESC:
		case KEY_F10:
			FrameManager->DeleteFrame();
			return TRUE;
		case KEY_F6:

			if (!DisableEdit)
			{
				UINT cp=View.VM.CodePage;
				FARString strViewFileName;
				View.GetFileName(strViewFileName);
				File Edit;
				if(!Edit.Open(strViewFileName, GENERIC_READ, FILE_SHARE_READ|(Opt.EdOpt.EditOpenedForWrite?FILE_SHARE_WRITE:0), nullptr, OPEN_EXISTING, FILE_FLAG_SEQUENTIAL_SCAN))
				{
					Message(MSG_WARNING|MSG_ERRORTYPE,1,MSG(MEditTitle),MSG(MEditCannotOpen),strViewFileName,MSG(MOk));
					return TRUE;
				}
				Edit.Close();
				// Если переключаемся в редактор, то удалять файл уже не нужно
				SetTempViewName(L"");
				SetExitCode(0);
				int64_t FilePos=View.GetFilePos();
				/* $ 07.07.2006 IS
				   Тут косяк, замеченный при чтении warnings - FilePos теряет информацию при преобразовании int64_t -> int
				   Надо бы поправить FileEditor на этот счет.
				*/
				FileEditor *ShellEditor = new FileEditor(strViewFileName, cp,
				        (GetCanLoseFocus()?FFILEEDIT_ENABLEF6:0)|(SaveToSaveAs?FFILEEDIT_SAVETOSAVEAS:0)|(DisableHistory?FFILEEDIT_DISABLEHISTORY:0),-2, static_cast<int>(FilePos), nullptr);
				ShellEditor->SetEnableF6(TRUE);
				/* $ 07.05.2001 DJ сохраняем NamesList */
				ShellEditor->SetNamesList(View.GetNamesList());
				FrameManager->DeleteFrame(this); // Insert уже есть внутри конструктора
				ShowTime(2);
			}

			return TRUE;
			// Печать файла с использованием плагина PrintMan
		case KEY_ALTF5:
		{
			if (Opt.UsePrintManager && CtrlObject->Plugins.FindPlugin(SYSID_PRINTMANAGER))
				CtrlObject->Plugins.CallPlugin(SYSID_PRINTMANAGER,OPEN_VIEWER,0); // printman

			return TRUE;
		}
		case KEY_ALTSHIFTF9:
			// Работа с локальной копией ViewerOptions
			ViewerOptions ViOpt;
			ViOpt.TabSize=View.GetTabSize();
			ViOpt.AutoDetectCodePage=View.GetAutoDetectCodePage();
			ViOpt.ShowScrollbar=View.GetShowScrollbar();
			ViOpt.ShowArrows=View.GetShowArrows();
			ViOpt.PersistentBlocks=View.GetPersistentBlocks();
			ViewerConfig(ViOpt,true);
			View.SetTabSize(ViOpt.TabSize);
			View.SetAutoDetectCodePage(ViOpt.AutoDetectCodePage);
			View.SetShowScrollbar(ViOpt.ShowScrollbar);
			View.SetShowArrows(ViOpt.ShowArrows);
			View.SetPersistentBlocks(ViOpt.PersistentBlocks);

			if (Opt.ViOpt.ShowKeyBar)
				ViewKeyBar.Show();

			View.Show();
			return TRUE;
		case KEY_ALTF11:

			if (GetCanLoseFocus())
				CtrlObject->CmdLine->ShowViewEditHistory();

			return TRUE;
		default:
//      Этот кусок - на будущее (по аналогии с редактором :-)
//      if (CtrlObject->Macro.IsExecuting() || !View.ProcessViewerInput(&ReadRec))
		{
			/* $ 22.03.2001 SVS
			   Это помогло от залипания :-)
			*/
			if (!CtrlObject->Macro.IsExecuting())
				if (Opt.ViOpt.ShowKeyBar)
					ViewKeyBar.Show();
			
				
			if (!ViewKeyBar.ProcessKey(Key)) {

				if (AutoClose) {
					if (Key == (KEY_MSWHEEL_DOWN | KEY_CTRL | KEY_SHIFT) )
						Key = KEY_MSWHEEL_DOWN;
					else if (Key == (KEY_MSWHEEL_UP | KEY_CTRL | KEY_SHIFT) )
						Key = KEY_MSWHEEL_UP;
						
					if (Key == KEY_MSWHEEL_DOWN || Key == (KEY_MSWHEEL_DOWN | KEY_ALT)) {
						int64_t FilePosBefore = View.GetFilePos();
						BOOL rv = View.ProcessKey(Key);
						if (FilePosBefore == View.GetFilePos())
							ProcessKey(KEY_ESC);
						return rv;
					}
				}

				return View.ProcessKey(Key);
			}
		}
		return TRUE;
	}
}
コード例 #4
0
ファイル: main.c プロジェクト: takaseijihe/slalomsimulater
int WINAPI WinMain(HINSTANCE,HINSTANCE,LPSTR,int){


		SetMainWindowText("Slalom_Simurator_01");
		ChangeWindowMode(TRUE);
		SetGraphMode(640,480,32);

		if(DxLib_Init() == -1)
		{
			return -1;
		}
        int count_draw,count;
        float angle[1000];
        float angle_accel=2000;
        float angle_vel=0;
        float velocity_right=500;
        float velocity_left=500;
        float x[1000];
       	float y[1000];

        	angle[0]=0;

        for(count_draw = 1; count_draw<=999;count_draw++){

        	if((angle[count_draw-1]<ang1)&&(velocity_right>=150)){
        		angle_accel=ANGLE_ACCEL;
        	}
        	if(((angle[count_draw-1]>=ang1)&&(angle[count_draw-1]<=ang2))||(velocity_right<150)){
        		angle_accel=0;
        		if(velocity_right<150){
        			velocity_right = 150;
        		}
        	}
        	if((angle[count_draw-1]<=ang3)&&(angle[count_draw-1]>=ang2)&&(velocity_left>=500)){
        		angle_accel=(-ANGLE_ACCEL);
        	}
        	if(angle[count_draw-1]>=ang3){
        		angle_vel = 0.0;
        		angle_accel = 0.0;
        		break;
        	}
        	angle_vel = angle_vel + angle_accel*0.001;
        	angle[count_draw]=angle[count_draw-1] + angle_vel*0.001;
        	velocity_left= 500 -(angle_vel*LENGTH_TREAD_LEFT*PAI)/360;
        	velocity_right=500 +(angle_vel*LENGTH_TREAD_LEFT*PAI)/360;
        	
        }
            x[0]=0;
        	y[0]=0;
        for(count=1;count<count_draw;count++){
        	x[count] =x[count-1]+500*0.001*sin((angle[count]*PAI)/180);
        	y[count] =y[count-1]+500*0.001*cos((angle[count]*PAI)/180);

        }
    	DrawLine(186,280,186,280-PRE,GetColor(255,0,0));
	
        for(count=1;count<count_draw;count++){
    	    DrawLine(186+x[count-1],(280-PRE-y[count]),186+x[count],(280-PRE-y[count-1]),GetColor(255,0,0));
	
        
        }
		DrawLine(186+x[count],280-PRE-y[count],186+x[count]+FOL,280-PRE-y[count],GetColor(255,0,0));
		

		DrawBox(100,100,112,280,GetColor(255,12,0),TRUE);
		DrawBox(280,100,292,280,GetColor(255,12,0),FALSE);
		DrawBox(112,88,280,100,GetColor(255,12,0),TRUE);
		DrawBox(100,280,112,292,GetColor(198,60,0),TRUE);
		DrawBox(280,280,292,292,GetColor(198,60,0),TRUE);
		DrawBox(100,88,112,100,GetColor(198,60,0),TRUE);
		DrawBox(280,88,292,100,GetColor(198,60,0),TRUE);


        WaitKey();      // キー入力待ち
        DxLib_End();    // DXライブラリ終了処理konnitiha
        return 0;
}
コード例 #5
0
ファイル: Param.c プロジェクト: RandolphWang1/huanhong
void InitTerm()
{
	//初始化各变量
	memset(&gTerm, 0, sizeof(T_TERM));

	//通讯信息
	strcpy(gTerm.szTPDU, "0180");
	strcpy(gTerm.szTelNo, "812");
	gTerm.uiModemDataNum = 193;
	gTerm.uiGprsDataNum = 193;
	gTerm.uiEthDataNum = 193;
	gTerm.uiWifiDataNum = 193;

	strcpy(gTerm.tEthernet.szServerIP, "192.168.8.180");
	strcpy(gTerm.tEthernet.szServerPort, "8181");
	strcpy(gTerm.tEthernet.szLocalIP, "192.168.1.168");
	strcpy(gTerm.tEthernet.szMask, "255.255.255.0");
	strcpy(gTerm.tEthernet.szGateway, "192.168.1.1");

	strcpy(gTerm.szGprsServerIP, "124.205.159.130");
	strcpy(gTerm.szGprsServerPort, "7979");

	strcpy(gTerm.szMemKey, "FFFFFF");
	strcpy(gTerm.szM1KeyA, "FFFFFFFFFFFF");
	strcpy(gTerm.szM1KeyB, "FFFFFFFFFFFF");
       
        gTerm.t_Wifi.nChannelNum = 1;
        memset(gTerm.t_Wifi.szBssid, 0, sizeof(gTerm.t_Wifi.szBssid));
        memcpy(gTerm.t_Wifi.szBssid, "d85d4c3c3a88", 12);
        memset(gTerm.t_Wifi.szSsid, 0, sizeof(gTerm.t_Wifi.szSsid));
        memcpy(gTerm.t_Wifi.szSsid, "huanhong", 8);
        gTerm.t_Wifi.nDatalink = 0x00;
        memset(gTerm.t_Wifi.szEquipmentIP, 0, sizeof(gTerm.t_Wifi.szEquipmentIP));
        memcpy(gTerm.t_Wifi.szEquipmentIP, "192.168.1.116", 13);
        memset(gTerm.t_Wifi.szServerMask, 0, sizeof(gTerm.t_Wifi.szServerMask));
        memcpy(gTerm.t_Wifi.szServerMask, "255.255.255.0", 13);
        memset(gTerm.t_Wifi.szServerGateway, 0, sizeof(gTerm.t_Wifi.szServerGateway));
        memcpy(gTerm.t_Wifi.szServerGateway, "192.168.1.1", 11);
        memset(gTerm.t_Wifi.szServerIP, 0, sizeof(gTerm.t_Wifi.szServerIP));
        memcpy(gTerm.t_Wifi.szServerIP, "192.168.1.100", 13);
        memset(gTerm.t_Wifi.szEquipmentPort, 0, sizeof(gTerm.t_Wifi.szEquipmentPort));
        memcpy(gTerm.t_Wifi.szEquipmentPort, "9191", 4);
        gTerm.t_Wifi.nEncrypType = 1;
        memset(&gTerm.t_Wifi.key_wep, 0, sizeof(KEY_WEP));
        gTerm.t_Wifi.key_wep.KeyLength = 0;
        gTerm.t_Wifi.key_wep.KeyIndex = 0;
        memcpy(gTerm.t_Wifi.key_wep.Group, "\0x1\0x1\0x1\0x1\0x1", 5);
	gTerm.bIsDC = TRUE;

	//保存
	if(!WriteData("test-term.dat", (char *)(&gTerm), sizeof(T_TERM), 0))
	{
		Clear();                      
		SetScrFont(FONT24, RED);
		TextOut(0, 2, ALIGN_CENTER, "机器硬件出错"); 
		TextOut(0, 3, ALIGN_CENTER, "请更换设备");
		FailBeep();					  
		WaitKey(2000);
		return;
	}
}
コード例 #6
0
ファイル: dl_ftp.c プロジェクト: dJacomeWposs/repoPrueba
//*****************************************************************************
//  Function        : GetListFile
//  Description     : Get list file from host.
//  Input           : N/A
//  Return          : 0/-1;         // 0  => Success
//                                  // -1 => Error
//  Note            : N/A
//  Globals Changed : N/A
//*****************************************************************************
static int GetListFile(void)
{
  int retry;
  int len, rx_len;
  int i, state, line_idx;
  DWORD getfile_mark, rx_mark, which;
  TBuffers.gRxBuf = MallocMW(COMM_BUFF_SIZE); // buffer de recepcion de datos
  TBuffers.gTxBuf = MallocMW(COMM_BUFF_SIZE); // buffer de recepcion de datos
   memset(TBuffers.gRxBuf,0x00,COMM_BUFF_SIZE);
   memset(TBuffers.gTxBuf,0x00,COMM_BUFF_SIZE);
  for (retry=0; retry<NUM_OF_RETRY; retry++) {
    FlushAll ();
    which = MW_FTP_DATA_CHNL;
    IOCtlMW(gFtpHandle, IO_FTP_DISCONNECT, &which);
    FlushAll ();
    graphicWindow("DESCARGANDO INFO");
    printf("\n\nArchivo %s",STR_LIST_FILE_NAME);
    //SprintfMW ((char *)gTxBuf, "\x12\x1b\x20""Dnld %s..\x5", STR_LIST_FILE_NAME);
    //PrintfMW(gTxBuf);
    SprintfMW ((char *)TBuffers.gTxBuf, "GET I /%s%s", STR_TEST_DIR_NAME, STR_LIST_FILE_NAME);
    if (IOCtlMW(gFtpHandle, IO_FTP_CMD_SEND, TBuffers.gTxBuf) == FALSE) {
   //   ShowMsgWait("GET:Command Fail.", TRUE);
      break;
    }

    if (WaitStatus(MW_FTP_STAT_DATA_CONNED, TIMEOUT_STATUS) < 0) {
//        centerS(5,1,21,"Fallo de datos");
  	  DispLineMW("Fallo de datos",MW_LINE4,MW_CLRDISP|MW_CENTER|MW_SMFONT);
//        getch(0);
        WaitKey(300,1);
      break;
    }
    gNumOfFiles = 0;
    gRxSpeed = 0;
    rx_len = 0;
    getfile_mark = FreeRunMark();
    while (1) {
      DWORD timeout=0;
      int ret;

      ret = GetCmdResp();
      if (ret >= 400) {
        PrintfMW("\x1B\xE0\x1CGET:%d\x05\x1D", ret);
        break;
      }

      state = S_IDLE;
      line_idx = 0;
      rx_mark = FreeRunMark();
      do {
        len = ReadMW(gFtpHandle, TBuffers.gRxBuf, COMM_BUFF_SIZE);
        if (len) {
          for (i=0; i<len; i++) {
            // Process data
            if ((TBuffers.gRxBuf[i] == 0x0d) || (TBuffers.gRxBuf[i] == 0x0a)) {
              if (line_idx) {
                gLineBuf[line_idx] = 0;
                line_idx = 0;
                TrimLineBuf();
                state = ProcGetListFileState(state);
              }
            }
            else if (line_idx < SIZE_LINE) {
              gLineBuf[line_idx] = TBuffers.gRxBuf[i];
              line_idx++;
            }
          }
          break;
        }
        if (WaitStatus(MW_FTP_STAT_DATA_CONNED, 1) < 0) {
          timeout = TIMEOUT_READ_BLOCK;
          break;
        }
        if (GetCharMW() == MWKEY_CANCL)
          break;
        //SleepMW();
      } while ((timeout = FreeRunElapsed(rx_mark)) < TIMEOUT_READ_BLOCK);

      if (timeout >= TIMEOUT_READ_BLOCK)   // End ?
        break;

      rx_len += len;
     printf("\fRx: %3d.%d K.bytes",rx_len/1000,(rx_len%1000)/100);
      //dumpMemory(TBuffers.gRxBuf,rx_len,1);
      //printf("\f%s",TBuffers.gRxBuf);getch(0);
      //PrintfMW("\x1B\x80""RXed %d bytes\x05\n\x05", rx_len);
      if (GetCharMW() == MWKEY_CANCL)
        break;
    }

    if (rx_len == 0) {
      graphicWindow("ERROR FTP");
      //clear_area_screen(2,2,7,20,FALSE);
    //  centerS(4,1,21,"RX Timeout.");
      WaitKey(300,1);
      continue;
    }
    which = MW_FTP_DATA_CHNL;
    IOCtlMW(gFtpHandle, IO_FTP_DISCONNECT, &which);  // Close Data channel
    gRxSpeed = (rx_len/(FreeRunElapsed(getfile_mark)/1000));
    //PrintfMW("\x1B\xA0Rx Spd:%d Bps\n", gRxSpeed);
    FreeMW(TBuffers.gRxBuf);
    FreeMW(TBuffers.gRxBuf);
    return 0;
  }
  FreeMW(TBuffers.gTxBuf);
  FreeMW(TBuffers.gTxBuf);
  return -1;
}
コード例 #7
0
ファイル: Dungeon.cpp プロジェクト: ArLEquiN64/Hack-on-TUS
void Dungeon::GoForward()
{
	time += option->move_speed;
	if (time >= 60 && !flaging) //一方通行の時に壁が見えてしまうので応急処置
	{
		flaging++;
		switch (muki)
		{
		case 0:
			pos_z++;
			break;
		case 1:
			pos_x++;
			break;
		case 2:
			pos_z--;
			break;
		case 3:
			pos_x--;
			break;
		default:
			break;
		}
	}
	if (time < 100)
	{
		switch (muki)
		{
		case 0:
			target_camera.z += option->move_speed;
			player_camera.z += option->move_speed;
			break;
		case 1:
			target_camera.x += option->move_speed;
			player_camera.x += option->move_speed;
			break;
		case 2:
			target_camera.z -= option->move_speed;
			player_camera.z -= option->move_speed;
			break;
		case 3:
			target_camera.x -= option->move_speed;
			player_camera.x -= option->move_speed;
			break;
		default:
			DrawString(0, 0, "Error! Dungeon.cpp have missing muki.", GetColor(255, 0, 0));
			WaitKey();
			break;
		}
	}
	else
	{
		switch (muki)
		{
		case 0:
			target_camera.z = pos_z * 100 + 100;
			player_camera.z = pos_z * 100;
			break;
		case 1:
			target_camera.x = pos_x * 100 + 100;
			player_camera.x = pos_x * 100;
			break;
		case 2:
			target_camera.z = pos_z * 100;
			player_camera.z = pos_z * 100 + 100;
			break;
		case 3:
			target_camera.x = pos_x * 100;
			player_camera.x = pos_x * 100 + 100;
			break;
		default:
			DrawString(0, 0, "Error! Dungeon.cpp have missing muki.", GetColor(255, 0, 0));
			WaitKey();
			break;
		}
		flaging = 0;
		state = 0;
		time = 0;
	}
}
コード例 #8
0
ファイル: service_happy.c プロジェクト: AlexEvil/Bear
//-----------------------------------------------------
void ServiceSetTimeHappy(void){
 unsigned char time_out;
 PlayServiceFile(PLAY_SERVICE,SERVICE_SET_TIME_FILE);
 while(1){
  PlayServiceFile(PLAY_SERVICE,SERVICE_SELECT_TIME);
  time_out = WaitKey(PREV,NEXT,-1,EXIT);
  if(time_out == false){ SystemReload(); }
  PlayBeep();
  if(KEY == EXIT){CLEAR_KEYPAD();break;}
  if(KEY == PREV){ // set minute
   CLEAR_KEYPAD();
   PlayServiceFile(PLAY_SERVICE,SERVICE_CHANGE_MINUTE);
   while(1){
    time_out = WaitKey(PREV,NEXT,-1,EXIT);
    if(time_out == false){ SystemReload(); }
    PlayBeep();
    if(KEY == EXIT){ CLEAR_KEYPAD(); break; }
    if(KEY == PREV){ // minute++
     CLEAR_KEYPAD();
     if(++AlarmHappy.minute == 60){
      AlarmHappy.minute = 0;
     }
    }
    if(KEY == NEXT){ // minute--
     CLEAR_KEYPAD();//clear KEY value
     if(AlarmHappy.minute == 0){
      AlarmHappy.minute = 59;
     }else{
       AlarmHappy.minute--;
      }
    }
    // PLAY CURRENT MINUTE
    PlayServiceFile(PLAY_MINUTE,AlarmHappy.minute);
   }
  }
  if(KEY == NEXT){ // set hour
   CLEAR_KEYPAD();
   PlayServiceFile(PLAY_SERVICE,SERVICE_CHANGE_HOUR);
   while(1){
    time_out = WaitKey(PREV,NEXT,-1,EXIT);
    if(time_out == false){ SystemReload(); }
    PlayBeep();
    if(KEY == EXIT){ CLEAR_KEYPAD(); break; }
    if(KEY == PREV){ // hour++
     CLEAR_KEYPAD();
     if(++AlarmHappy.hour == 24){
      AlarmHappy.hour = 0;
     }
    }
    if(KEY == NEXT){ // hour--
     CLEAR_KEYPAD();
     if(AlarmHappy.hour == 0){
      AlarmHappy.hour = 23;
     }else{
       AlarmHappy.hour--;
      }
    }
    // PLAY CURRENT HOUR
    PlayServiceFile(PLAY_HOUR,AlarmHappy.hour);
   }
  }
 }
 return;
}
コード例 #9
0
ファイル: manager.cpp プロジェクト: CyberShadow/FAR
int Manager::ProcessKey(DWORD Key)
{
	int ret=FALSE;

	if (CurrentFrame)
	{
		DWORD KeyM=(Key&(~KEY_CTRLMASK));

		if (!((KeyM >= KEY_MACRO_BASE && KeyM <= KEY_MACRO_ENDBASE) || (KeyM >= KEY_OP_BASE && KeyM <= KEY_OP_ENDBASE))) // пропустим макро-коды
		{
			switch (CurrentFrame->GetType())
			{
				case MODALTYPE_PANELS:
				{
					_ALGO(CleverSysLog clv(L"Manager::ProcessKey()"));
					_ALGO(SysLog(L"Key=%s",_FARKEY_ToName(Key)));
#ifndef NO_WRAPPER
					if (CtrlObject->Cp()->ActivePanel->GetMode() == PLUGIN_PANEL)
					{
						PluginHandle *ph=(PluginHandle*)CtrlObject->Cp()->ActivePanel->GetPluginHandle();
						if (ph && ph->pPlugin->IsOemPlugin())
							if (CtrlObject->Cp()->ActivePanel->SendKeyToPlugin(Key,TRUE))
								return TRUE;
					}
#endif // NO_WRAPPER
					break;
				}
			#if 0
				case MODALTYPE_VIEWER:
					//if(((FileViewer*)CurrentFrame)->ProcessViewerInput(FrameManager->GetLastInputRecord()))
					//  return TRUE;
					break;
				case MODALTYPE_EDITOR:
					//if(((FileEditor*)CurrentFrame)->ProcessEditorInput(FrameManager->GetLastInputRecord()))
					//  return TRUE;
					break;
				case MODALTYPE_DIALOG:
					//((Dialog*)CurrentFrame)->CallDlgProc(DN_KEY,((Dialog*)CurrentFrame)->GetDlgFocusPos(),Key);
					break;
				case MODALTYPE_VMENU:
				case MODALTYPE_HELP:
				case MODALTYPE_COMBOBOX:
				case MODALTYPE_USER:
				case MODALTYPE_FINDFOLDER:
				default:
					break;
			#endif
			}
		}

#if defined(FAR_ALPHA_VERSION)

// сей код для проверки исключатор, просьба не трогать :-)
		if (Key == KEY_CTRLALTAPPS || Key == KEY_RCTRLRALTAPPS || Key == KEY_CTRLRALTAPPS || Key == KEY_RCTRLALTAPPS)
		{
			struct __ECODE
			{
				NTSTATUS Code;
				const wchar_t *Name;
			} ECode[]=
			{
				{EXCEPTION_ACCESS_VIOLATION,L"Access Violation (Read)"},
				{EXCEPTION_ACCESS_VIOLATION,L"Access Violation (Write)"},
				{EXCEPTION_INT_DIVIDE_BY_ZERO,L"Divide by zero"},
				{EXCEPTION_ILLEGAL_INSTRUCTION,L"Illegal instruction"},
				{EXCEPTION_STACK_OVERFLOW,L"Stack Overflow"},
				{EXCEPTION_FLT_DIVIDE_BY_ZERO,L"Floating-point divide by zero"},
				{EXCEPTION_BREAKPOINT,L"Breakpoint"},
#ifdef _M_IA64
				{EXCEPTION_DATATYPE_MISALIGNMENT,L"Alignment fault (IA64 specific)",},
#endif
				/*
				        {EXCEPTION_FLT_OVERFLOW,"EXCEPTION_FLT_OVERFLOW"},
				        {EXCEPTION_SINGLE_STEP,"EXCEPTION_SINGLE_STEP",},
				        {EXCEPTION_ARRAY_BOUNDS_EXCEEDED,"EXCEPTION_ARRAY_BOUNDS_EXCEEDED",},
				        {EXCEPTION_FLT_DENORMAL_OPERAND,"EXCEPTION_FLT_DENORMAL_OPERAND",},
				        {EXCEPTION_FLT_INEXACT_RESULT,"EXCEPTION_FLT_INEXACT_RESULT",},
				        {EXCEPTION_FLT_INVALID_OPERATION,"EXCEPTION_FLT_INVALID_OPERATION",},
				        {EXCEPTION_FLT_STACK_CHECK,"EXCEPTION_FLT_STACK_CHECK",},
				        {EXCEPTION_FLT_UNDERFLOW,"EXCEPTION_FLT_UNDERFLOW",},
				        {EXCEPTION_INT_OVERFLOW,"EXCEPTION_INT_OVERFLOW",0},
				        {EXCEPTION_PRIV_INSTRUCTION,"EXCEPTION_PRIV_INSTRUCTION",0},
				        {EXCEPTION_IN_PAGE_ERROR,"EXCEPTION_IN_PAGE_ERROR",0},
				        {EXCEPTION_NONCONTINUABLE_EXCEPTION,"EXCEPTION_NONCONTINUABLE_EXCEPTION",0},
				        {EXCEPTION_INVALID_DISPOSITION,"EXCEPTION_INVALID_DISPOSITION",0},
				        {EXCEPTION_GUARD_PAGE,"EXCEPTION_GUARD_PAGE",0},
				        {EXCEPTION_INVALID_HANDLE,"EXCEPTION_INVALID_HANDLE",0},
				*/
			};
			static union
			{
				int     i;
				int     *iptr;
				double  d;
			} zero_const; //, refers;
			zero_const.i=0L;
			MenuItemEx ModalMenuItem;
			ModalMenuItem.Clear();
			VMenu2 ModalMenu(L"Test Exceptions",nullptr,0,ScrY-4);
			ModalMenu.SetFlags(VMENU_WRAPMODE);
			ModalMenu.SetPosition(-1,-1,0,0);

			for (size_t I=0; I<ARRAYSIZE(ECode); I++)
			{
				ModalMenuItem.strName = ECode[I].Name;
				ModalMenu.AddItem(&ModalMenuItem);
			}

			int ExitCode=ModalMenu.Run();

			switch (ExitCode)
			{
				case -1:
					return TRUE;
				case 0:
					zero_const.i=*zero_const.iptr;
					break;
				case 1:
					*zero_const.iptr = 0;
					break;
				case 2:
					zero_const.i=1/zero_const.i;
					break;
				case 3:
#if defined(_MSC_VER)
#ifdef _M_IA64
#define __REG_IA64_IntR0 1024
					__setReg(__REG_IA64_IntR0, 666);
#else
					__ud2();
#endif
#elif defined(__GNUC__)
					asm("ud2");
#else
#error "Unsupported compiler"
#endif
					break;
				case 4:
					Test_EXCEPTION_STACK_OVERFLOW(nullptr);
					break;
				case 5:
					//refers.d = 1.0/zero_const.d;
					break;
				case 6:
					DebugBreak();
					break;
#ifdef _M_IA64
				case 7:
				{
					BYTE temp[10]={};
					double* val;
					val = (double*)(&temp[3]);
					printf("%lf\n", *val);
				}
#endif
			}

			Message(MSG_WARNING, 1, L"Test Exceptions failed", L"", ECode[ExitCode].Name, L"", MSG(MOk));
			return TRUE;
		}

#endif
		/*** БЛОК ПРИВЕЛЕГИРОВАННЫХ КЛАВИШ ! ***/

		/***   КОТОРЫЕ НЕЛЬЗЯ НАМАКРОСИТЬ    ***/
		switch (Key)
		{
			case KEY_ALT|KEY_NUMPAD0:
			case KEY_RALT|KEY_NUMPAD0:
			case KEY_ALTINS:
			case KEY_RALTINS:
			{
				RunGraber();
				return TRUE;
			}
			case KEY_CONSOLE_BUFFER_RESIZE:
				Sleep(1);
				ResizeAllFrame();
				return TRUE;
		}

		/*** А вот здесь - все остальное! ***/
		if (!Global->IsProcessAssignMacroKey)
			// в любом случае если кому-то не нужны все клавиши или
		{
			bool scrollable = false;
			if ( Global->Opt->WindowMode )
			{
				int frame_type = CurrentFrame->GetType();
				scrollable = frame_type != MODALTYPE_EDITOR && frame_type != MODALTYPE_VIEWER;
			};

			switch (Key)
			{
				// <Удалить после появления макрофункции Scroll>
				case KEY_CTRLALTUP:
				case KEY_RCTRLRALTUP:
				case KEY_CTRLRALTUP:
				case KEY_RCTRLALTUP:
					if(scrollable)
					{
						Global->Console->ScrollWindow(-1);
						return TRUE;
					}
					break;

				case KEY_CTRLALTDOWN:
				case KEY_RCTRLRALTDOWN:
				case KEY_CTRLRALTDOWN:
				case KEY_RCTRLALTDOWN:
					if(scrollable)
					{
						Global->Console->ScrollWindow(1);
						return TRUE;
					}
					break;

				case KEY_CTRLALTPGUP:
				case KEY_RCTRLRALTPGUP:
				case KEY_CTRLRALTPGUP:
				case KEY_RCTRLALTPGUP:
					if(scrollable)
					{
						Global->Console->ScrollWindow(-ScrY);
						return TRUE;
					}
					break;

				case KEY_CTRLALTHOME:
				case KEY_RCTRLRALTHOME:
				case KEY_CTRLRALTHOME:
				case KEY_RCTRLALTHOME:
					if(scrollable)
					{
						while(Global->Console->ScrollWindow(-ScrY));
						return TRUE;
					}
					break;

				case KEY_CTRLALTPGDN:
				case KEY_RCTRLRALTPGDN:
				case KEY_CTRLRALTPGDN:
				case KEY_RCTRLALTPGDN:
					if(scrollable)
					{
						Global->Console->ScrollWindow(ScrY);
						return TRUE;
					}
					break;

				case KEY_CTRLALTEND:
				case KEY_RCTRLRALTEND:
				case KEY_CTRLRALTEND:
				case KEY_RCTRLALTEND:
					if(scrollable)
					{
						while(Global->Console->ScrollWindow(ScrY));
						return TRUE;
					}
					break;
				// </Удалить после появления макрофункции Scroll>

				case KEY_CTRLW:
				case KEY_RCTRLW:
					ShowProcessList();
					return TRUE;
				case KEY_F11:
					PluginsMenu();
					FrameManager->RefreshFrame();
					//_MANAGER(SysLog(-1));
					return TRUE;
				case KEY_ALTF9:
				case KEY_RALTF9:
				{
					//_MANAGER(SysLog(1,"Manager::ProcessKey, KEY_ALTF9 pressed..."));
					Sleep(1);
					SetVideoMode();
					Sleep(1);

					/* В процессе исполнения Alt-F9 (в нормальном режиме) в очередь
					   консоли попадает WINDOW_BUFFER_SIZE_EVENT, формируется в
					   ChangeVideoMode().
					   В режиме исполнения макросов ЭТО не происходит по вполне понятным
					   причинам.
					*/
					if (CtrlObject->Macro.IsExecuting())
					{
						int PScrX=ScrX;
						int PScrY=ScrY;
						Sleep(1);
						GetVideoMode(CurSize);

						if (PScrX+1 == CurSize.X && PScrY+1 == CurSize.Y)
						{
							//_MANAGER(SysLog(-1,"GetInputRecord(WINDOW_BUFFER_SIZE_EVENT); return KEY_NONE"));
							return TRUE;
						}
						else
						{
							PrevScrX=PScrX;
							PrevScrY=PScrY;
							//_MANAGER(SysLog(-1,"GetInputRecord(WINDOW_BUFFER_SIZE_EVENT); return KEY_CONSOLE_BUFFER_RESIZE"));
							Sleep(1);
							return ProcessKey(KEY_CONSOLE_BUFFER_RESIZE);
						}
					}

					//_MANAGER(SysLog(-1));
					return TRUE;
				}
				case KEY_F12:
				{
					int TypeFrame=FrameManager->GetCurrentFrame()->GetType();

					if (TypeFrame != MODALTYPE_HELP && TypeFrame != MODALTYPE_DIALOG)
					{
						DeactivateFrame(FrameMenu(),0);
						//_MANAGER(SysLog(-1));
						return TRUE;
					}

					break; // отдадим F12 дальше по цепочке
				}

				case KEY_CTRLALTSHIFTPRESS:
				case KEY_RCTRLALTSHIFTPRESS:
				{
					if (!(Global->Opt->CASRule&1) && Key == KEY_CTRLALTSHIFTPRESS)
						break;

					if (!(Global->Opt->CASRule&2) && Key == KEY_RCTRLALTSHIFTPRESS)
						break;

					if (!Global->Opt->OnlyEditorViewerUsed)
					{
						if (CurrentFrame->FastHide())
						{
							int isPanelFocus=CurrentFrame->GetType() == MODALTYPE_PANELS;

							if (isPanelFocus)
							{
								int LeftVisible=CtrlObject->Cp()->LeftPanel->IsVisible();
								int RightVisible=CtrlObject->Cp()->RightPanel->IsVisible();
								int CmdLineVisible=CtrlObject->CmdLine->IsVisible();
								int KeyBarVisible=CtrlObject->Cp()->MainKeyBar.IsVisible();
								CtrlObject->CmdLine->ShowBackground();
								CtrlObject->Cp()->LeftPanel->Hide0();
								CtrlObject->Cp()->RightPanel->Hide0();

								switch (Global->Opt->PanelCtrlAltShiftRule)
								{
									case 0:
										CtrlObject->CmdLine->Show();
										CtrlObject->Cp()->MainKeyBar.Show();
										break;
									case 1:
										CtrlObject->Cp()->MainKeyBar.Show();
										break;
								}

								WaitKey(Key==KEY_CTRLALTSHIFTPRESS?KEY_CTRLALTSHIFTRELEASE:KEY_RCTRLALTSHIFTRELEASE);

								if (LeftVisible)      CtrlObject->Cp()->LeftPanel->Show();

								if (RightVisible)     CtrlObject->Cp()->RightPanel->Show();

								if (CmdLineVisible)   CtrlObject->CmdLine->Show();

								if (KeyBarVisible)    CtrlObject->Cp()->MainKeyBar.Show();
							}
							else
							{
								ImmediateHide();
								WaitKey(Key==KEY_CTRLALTSHIFTPRESS?KEY_CTRLALTSHIFTRELEASE:KEY_RCTRLALTSHIFTRELEASE);
							}

							FrameManager->RefreshFrame();
						}

						return TRUE;
					}

					break;
				}
				case KEY_CTRLTAB:
				case KEY_RCTRLTAB:
				case KEY_CTRLSHIFTTAB:
				case KEY_RCTRLSHIFTTAB:

					if (CurrentFrame->GetCanLoseFocus())
					{
						DeactivateFrame(CurrentFrame,(Key==KEY_CTRLTAB||Key==KEY_RCTRLTAB)?1:-1);
					}

					_MANAGER(SysLog(-1));
					return TRUE;
			}
		}

		CurrentFrame->UpdateKeyBar();
		CurrentFrame->ProcessKey(Key);
	}

	_MANAGER(SysLog(-1));
	return ret;
}
コード例 #10
0
ファイル: Dungeon.cpp プロジェクト: ArLEquiN64/Hack-on-TUS
void Dungeon::LoadDungeon(int floor) //行く予定の階層の情報を読み込むかつ初期化
{
	switch (floor)
	{
	case 1:
		fp = fopen("./dungeon/dungeon1/floor1/map.cns", "r");
		strcpy(dungeon_name, "dungeon1/floor1");
		break;
	case 2:
		fp = fopen("./dungeon/dungeon1/floor2/map.cns", "r");
		strcpy(dungeon_name, "dungeon1/floor2");
		break;
	case 3:
		fp = fopen("./dungeon/dungeon1/floor3/map.cns", "r");
		strcpy(dungeon_name, "dungeon1/floor3");
		break;
	}
	floors = floor;

	//GraphFilter(kabe_handle, DX_GRAPH_FILTER_GAUSS, 32, 55600);

	if (fp == NULL) //エラーチェック
	{
		DrawString(0, 0, "Error!", GetColor(255, 0, 0));
		WaitKey();
	}

	fscanf(fp, "%d,%d", &x_max, &z_max);
	for (int i = 0; i < z_max; i++)
	{
		for (int i2 = 0; i2 < x_max; i2++)
		{
			fscanf(fp, "%d,", &map_data[i][i2]);
			//fscanf(fp, "%c");
		}
	}
	fscanf(fp, "%d,%d", &start_x, &start_z);
	fscanf(fp, "%d", &feel_flag);
	fscanf(fp, "%s", kabe_name);
	fscanf(fp, "%d,%d,%d", &fog_r, &fog_g, &fog_b);
	fscanf(fp, "%f,%f", &fog_start, &fog_goal);

	SetTransColor(255, 255, 255); //白を透過色に
	kabe_handle = LoadGraph(kabe_name);
	SetTransColor(0, 0, 0); //一応戻す


	if (kabe_handle == -1) //エラーチェック
	{
		DrawString(0, 0, "Error!", GetColor(255, 0, 0));
		WaitKey();
	}

	if (feel_flag)
	{
		int keep = 0;
		for (int i = 0; i < z_max / 2; i++)
		{
			for (int i2 = 0; i2 < x_max; i2++)
			{
				keep = map_data[i][i2];
				map_data[i][i2] = map_data[z_max - i - 1][i2];
				map_data[z_max - i - 1][i2] = keep;
			}
		}
	}

	//情報の初期化
	pos_x = start_x;
	pos_z = start_z;
	state = 0;
	time = 0;
	muki = 0;
	nowchoose = 0;
	state = 0;
	minimap_flag = 1;

	//カメラの初期化
	target_camera = VGet(pos_x * 100 + 50, 50, pos_z * 100 + 100);
	player_camera = VGet(pos_x * 100 + 50, 50, pos_z * 100);

	//フォグの設定
	SetFogEnable(TRUE);
	SetFogColor(fog_r, fog_g, fog_b);
	SetFogStartEnd(fog_start, fog_goal);

}
コード例 #11
0
ファイル: service_rtc.c プロジェクト: AlexEvil/Bear
//-----------------------------------------------------
void ServiceSetDateRTC(void){
 unsigned char time_out;
 PlayServiceFile(PLAY_SERVICE,SERVICE_SET_DATE_FILE);
  while(1){
  PlayServiceFile(PLAY_SERVICE,SERVICE_DATE_YEAR_CHANGE);
  time_out = WaitKey(PREV,NEXT,PLAY,EXIT);
  if(time_out == false){ break; }
  PlayBeep();
  if(KEY == EXIT){ CLEAR_KEYPAD(); break; }

  if(KEY == PREV){ // set month
   CLEAR_KEYPAD();
   PlayServiceFile(PLAY_SERVICE,SERVICE_CHANGE_MONTH);
   while(1){
    time_out = WaitKey(PREV,NEXT,-1,EXIT);
    if(time_out == false){ break; }
    PlayBeep();
    if(KEY == EXIT){CLEAR_KEYPAD();break;}
    if(KEY == PREV){ // month++
     CLEAR_KEYPAD();
     if(++DS_CALENDAR.Month == 13) DS_CALENDAR.Month = 1;
    }
    if(KEY == NEXT){ // month--
     CLEAR_KEYPAD();
     if(--DS_CALENDAR.Month == 0) DS_CALENDAR.Month = 12;
    }
    // PLAY CURRENT MONTH
    PlayServiceFile(PLAY_MONTH,(DS_CALENDAR.Month-1));
   }
  }
  if(KEY == NEXT){ // set date
   CLEAR_KEYPAD();
   PlayServiceFile(PLAY_SERVICE,SERVICE_CHANGE_DAY);
   while(1){
    time_out = WaitKey(PREV,NEXT,-1,EXIT);
    if(time_out == false){ break; }
    PlayBeep();
    if(KEY == EXIT){CLEAR_KEYPAD();break;}
    if(KEY == PREV){ // date++
     CLEAR_KEYPAD();
     if(++DS_CALENDAR.Date == 29){ if((DS_CALENDAR.Date == 2) && (not_leap())){ DS_CALENDAR.Date = 1; } }
     if(  DS_CALENDAR.Date == 31){ if((DS_CALENDAR.Date==4)||(DS_CALENDAR.Date==6)||(DS_CALENDAR.Date==9)||(DS_CALENDAR.Date==11)){ DS_CALENDAR.Date = 1; } }
     if(  DS_CALENDAR.Date == 32){ DS_CALENDAR.Date = 1; }
    }
    if(KEY == NEXT){ // date--
     CLEAR_KEYPAD();
     if(--DS_CALENDAR.Date==0){
      if((DS_CALENDAR.Date==4)||(DS_CALENDAR.Date==6)||(DS_CALENDAR.Date==9)||(DS_CALENDAR.Date==11)){
       DS_CALENDAR.Date=30;
      }else{
        DS_CALENDAR.Date=31;
       }
      if(DS_CALENDAR.Date == 2){ DS_CALENDAR.Date=29; }
      if((DS_CALENDAR.Date == 2) && (not_leap())){
       DS_CALENDAR.Date=28;
      }
     }
    }
    // PLAY CURRENT DATE
    PlayServiceFile(PLAY_DATE,(DS_CALENDAR.Date-1));
   }
  }
  if(KEY == PLAY){ // set year
   CLEAR_KEYPAD();
   PlayServiceFile(PLAY_SERVICE,SERVICE_CHANGE_YEAR);
   while(1){
    time_out = WaitKey(PREV,NEXT,-1,EXIT);
    if(time_out == false){ break; }
    PlayBeep();
    if(KEY == EXIT){ CLEAR_KEYPAD(); break; }
    if(KEY == PREV){ // year++
     CLEAR_KEYPAD();
     if(++DS_CALENDAR.Year > 20){
      DS_CALENDAR.Year = 0x09;
     }
    }
    if(KEY == NEXT){ // year--
     CLEAR_KEYPAD();
     if(--DS_CALENDAR.Year < 9){
      DS_CALENDAR.Year = 0x20;
     }
    }
    // PLAY CURRENT DATY
    PlayServiceFile(PLAY_YEAR,(DS_CALENDAR.Year-9));
   }
  }
 }
 return;
}
コード例 #12
0
ファイル: service_rtc.c プロジェクト: AlexEvil/Bear
//-----------------------------------------------------
void ServiceSetTimeRTC(void){
 unsigned char time_out;
 PlayServiceFile(PLAY_SERVICE,SERVICE_SET_TIME_FILE);
 PlayTimeRTC();
 while(1){
  PlayServiceFile(PLAY_SERVICE,SERVICE_TIME_CHANGE);
  time_out = WaitKey(PREV,NEXT,-1,EXIT);
  if(time_out == false) break;
  PlayBeep();
  if(KEY == EXIT){CLEAR_KEYPAD();break;}
  if(KEY == PREV){ // set minute
   CLEAR_KEYPAD();
   PlayServiceFile(PLAY_SERVICE,SERVICE_CHANGE_MINUTE);
   while(1){
    time_out = WaitKey(PREV,NEXT,-1,EXIT);
    if(time_out == false){ break; }
    PlayBeep();
    if(KEY == EXIT){ CLEAR_KEYPAD(); break; }
    if(KEY == PREV){ // minute++
     CLEAR_KEYPAD();
     if(++DS_CALENDAR.Minutes == 60) DS_CALENDAR.Minutes = 0;
    }
    if(KEY == NEXT){ // minute--
     CLEAR_KEYPAD();//clear KEY value
     if(DS_CALENDAR.Minutes == 0){
      DS_CALENDAR.Minutes = 59;
     }else{
       DS_CALENDAR.Minutes--;
      }
    }
    // PLAY CURRENT MINUTE
    PlayServiceFile(PLAY_MINUTE,DS_CALENDAR.Minutes);
   }
  }
  if(KEY == NEXT){ // set hour
   CLEAR_KEYPAD();
   PlayServiceFile(PLAY_SERVICE,SERVICE_CHANGE_HOUR);
   while(1){
    time_out = WaitKey(PREV,NEXT,-1,EXIT);
    if(time_out == false){ break; }
    PlayBeep();
    if(KEY == EXIT){ CLEAR_KEYPAD(); break; }
    if(KEY == PREV){ // hour++
     CLEAR_KEYPAD();
     if(++DS_CALENDAR.Hour == 24) DS_CALENDAR.Hour = 0;
    }
    if(KEY == NEXT){ // hour--
     CLEAR_KEYPAD();//clear KEY value
     if(DS_CALENDAR.Hour == 0){
      DS_CALENDAR.Hour = 23;
     }else{
       DS_CALENDAR.Hour--;
      }
    }
    // PLAY CURRENT HOUR
    PlayServiceFile(PLAY_HOUR,DS_CALENDAR.Hour);
   }
  }
 }
 return;
}
コード例 #13
0
ファイル: sys_bear.c プロジェクト: AlexEvil/Bear
//-----------------------------------------------------
void ServiceSystem(void){
 unsigned char time_out;
 PlayServiceFile(PLAY_SERVICE,SERVICE_SERVICE_FILE);
 while(1){
  PlayServiceFile(PLAY_SERVICE,SERVICE_SETTING_FILE);
  time_out = WaitKey(PREV,NEXT,PLAY,EXIT);
  if(time_out == false) break;
  PlayBeep();
  if(KEY == EXIT){
   CLEAR_KEYPAD();
   break;
  }
  if(KEY == PREV){ //--SET DATE/TIME THE RTC--
   CLEAR_KEYPAD();
   ReadDsRtcTime(); // Read date/time RTC from DS3231
   while(1){
    PlayServiceFile(PLAY_SERVICE,SERVICE_DATE_TIME_FILE);
    time_out = WaitKey(PREV,NEXT,-1,EXIT);
    if(time_out == false) break;
    PlayBeep();
    if(KEY == EXIT){
     CLEAR_KEYPAD();
     WriteDsRtcTime(); //Save date/time RTC to DS3231
     break;
    }
    if(KEY == PREV){ //Set DATE RTC
     CLEAR_KEYPAD();
     ServiceSetDateRTC();
    }
    if(KEY == NEXT){ //Set TIME RTC
     CLEAR_KEYPAD();
     ServiceSetTimeRTC();
    }
   }
  }
  if(KEY == NEXT){ //SET VOLUME
   CLEAR_KEYPAD();
   ServiceSetVolume();
  }
  if(KEY == PLAY){ //SET HAPPY and ALARM
   CLEAR_KEYPAD();
   while(1){
    PlayServiceFile(PLAY_SERVICE,SERVICE_HAPPY_ALARM_FILE);
    time_out = WaitKey(PREV,NEXT,-1,EXIT);
    if(time_out == false) break;
    PlayBeep();
    if(KEY == EXIT){
     CLEAR_KEYPAD();
     break;
    }
    if(KEY == NEXT){ // SET ALARM
     CLEAR_KEYPAD();
     ServiceSetAlarm();
    }
    if(KEY == PREV){ // SET DATE/TIME THE HAPPY
     CLEAR_KEYPAD();
     //LOAD_BIRTHDAY();//read current data/time the BIRTHDAY from eeprom
     //PlayFile(PLAY_SERVICE,SET_BIRTHDAY,0x00);
     //PlayFile(PLAY_SERVICE,CURRENT_BIRTHDAY,0x00);
     //PlayTimeBIRTHDAY();
     //PlayDateBIRTHDAY();
     while(1){
      PlayServiceFile(PLAY_SERVICE,SERVICE_SET_DATE_TIME_FILE);
      time_out = WaitKey(PREV,NEXT,-1,EXIT);
      if(time_out == false) break;
      PlayBeep();
      if(KEY == EXIT){
       CLEAR_KEYPAD();
       //SAVE_BIRTHDAY();//save current date/time the BIRTHDAY to eeprom
       break;
      }
      if(KEY == PREV){//Set DATE HAPPY
       CLEAR_KEYPAD();
       ServiceSetDateHappy();
      }
      if(KEY == PREV){ //Set TIME HAPPY
       CLEAR_KEYPAD();
       ServiceSetTimeHappy();
      }
     }
    }
   }
  }
 }
}
コード例 #14
0
ファイル: PrinterTest.c プロジェクト: RandolphWang1/huanhong
void PrintLog(char *Title, char *Msg)
{ 
    int ret;
    char PrintBuff[1024];

START_PRINT:
	if(CheckPrinter() != TRUE)
		goto end1;

	//清空打印缓冲区
	ClearPrintBuff();

    SetPrintFont(24);

    ret = FillPrintBuff("PL");
    if(ret < 0)
		goto end1;
    memset(PrintBuff, 0x00, sizeof(PrintBuff));
    strcpy(PrintBuff, Title);
    ret = FillPrintBuff(PrintBuff);
    if(ret < 0)
		goto end1;             
    ret = FillPrintBuff("PL");
    if(ret < 0)
		goto end1;
    SetPrintIndent(0); 
      
    memset(PrintBuff, 0, sizeof(PrintBuff));
    strcpy(PrintBuff, Msg);
    ret = FillPrintBuff(PrintBuff);
    if(ret < 0)
		goto end1;
    ret = FillPrintBuff("PL"); 
    if(ret < 0)
		goto end1;    
     
	//开始打印    
	ret =StartPrint();
	DebugOut("print error code:[%d]\n", ret);
	if(ret != 0)
	{
		if(ret == -1)
			goto START_PRINT;
		else if(ret == -2)
			goto end2;
		else if(ret == -3)
			goto end1;
	}

    return;

end1:  

	FailBeep(); 
	ClearLine(1, 9);
	TextOut(0, 3, ALIGN_CENTER, "请检查打印机"); 
	TextOut(0, 4, ALIGN_CENTER, "打印失败");
	WaitKey(2000);

	return;

end2:  

	FailBeep(); 
	ClearLine(1, 9);
	TextOut(0, 3, ALIGN_CENTER, "电量不足"); 
	TextOut(0, 4, ALIGN_CENTER, "无法执行打印");
	WaitKey(2000);
}
コード例 #15
0
ファイル: Dungeon.cpp プロジェクト: ArLEquiN64/Hack-on-TUS
void Dungeon::GoBack()
{
	time += option->move_speed;
	if (time < 100)
	{
		switch (muki)
		{
		case 0:
			target_camera.z -= option->move_speed;
			player_camera.z -= option->move_speed;
			break;
		case 1:
			target_camera.x -= option->move_speed;
			player_camera.x -= option->move_speed;
			break;
		case 2:
			target_camera.z += option->move_speed;
			player_camera.z += option->move_speed;
			break;
		case 3:
			target_camera.x += option->move_speed;
			player_camera.x += option->move_speed;
			break;
		default:
			DrawString(0, 0, "Error! Dungeon.cpp have missing muki.", GetColor(255, 0, 0));
			WaitKey();
			break;
		}
	}
	else
	{
		//調整
		switch (muki)
		{
		case 0:
			pos_z--;
			target_camera.z = pos_z * 100 + 100;
			player_camera.z = pos_z * 100;
			break;
		case 1:
			pos_x--;
			target_camera.x = pos_x * 100 + 100;
			player_camera.x = pos_x * 100;
			break;
		case 2:
			pos_z++;
			target_camera.z = pos_z * 100;
			player_camera.z = pos_z * 100 + 100;
			break;
		case 3:
			pos_x++;
			target_camera.x = pos_x * 100;
			player_camera.x = pos_x * 100 + 100;
			break;
		default:
			DrawString(0, 0, "Error! Dungeon.cpp have missing muki.", GetColor(255, 0, 0));
			WaitKey();
			break;
		}
		flaging = 0;
		state = 0;
		time = 0;
	}
}
コード例 #16
0
ファイル: PrinterTest.c プロジェクト: RandolphWang1/huanhong
int PrinterNormalTest()
{
	int   i, ret=0;  
	CHAR  PrintBuff[100]; 
	char  buff[64];  
	int   num;

	Clear();
	SetScrFont(FONT20, WHITE);
	TextOut(0, 2, ALIGN_CENTER, "打印测试");
	TextOut(0, 4, ALIGN_LEFT, "请输入打印张数:(1-999)");

	memset(buff, 0, sizeof(buff));
	SetScrFont(FONT20, RED);
	ret = Input(22, 4, buff, 3, IME_NUMBER, BLACK, GREEN, FALSE, FALSE, FALSE);
	if(ret != OK)
	{
		FailBeep(); 
		ClearLine(1, 9);
		SetScrFont(FONT20, WHITE);
		TextOut(0, 4, ALIGN_CENTER, "打印失败");
		WaitKey(2000);

		return ERROR;
	}
	num = atoi(buff);
	DebugOut("打印张数:[%d]\n", num);

	for (i = 0; i < num; i ++)
	{
START_PRINT:
		if(CheckPrinter() != TRUE)
			goto end1;

		//清空打印缓冲区
		ClearPrintBuff();
		//设置打印字体大小

//		ret = FillPrintBuff("PL");
//		if(ret < 0)
	//		goto end1;
		SetPrintIndent(0);    

		//SetPrintFont(64);  
		SetPrintFont(48);  
		memset(PrintBuff, 0x00, sizeof(PrintBuff));
		strcpy(PrintBuff, "************");
		ret = FillPrintBuff(PrintBuff);
		if(ret < 0)
			goto end1;             
	//	ret = FillPrintBuff("PL");
	//	if(ret < 0)
	//		goto end1;
		SetPrintIndent(0);

		SetPrintIndent(0);   
		//SetPrintFont(16);  
		SetPrintFont(24);  
		memset(PrintBuff, 0x00, sizeof(PrintBuff));
		strcpy(PrintBuff, "<TYPE24>");
		ret = FillPrintBuff(PrintBuff);
		if(ret < 0)
			goto end1;             
	//	ret = FillPrintBuff("PL");
	//	if(ret < 0)
	//		goto end1;
		SetPrintIndent(0);

		//SetPrintFont(16);  
		SetPrintFont(24);  
		memset(PrintBuff, 0x00, sizeof(PrintBuff));
		strcpy(PrintBuff, "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUV");
		ret = FillPrintBuff(PrintBuff);
		if(ret < 0)
			goto end1;             
	//	ret = FillPrintBuff("PL");
	//	if(ret < 0)
	//		goto end1;
		SetPrintIndent(0); 

		//SetPrintFont(16);  
		SetPrintFont(24);  
		memset(PrintBuff, 0x00, sizeof(PrintBuff));
		strcpy(PrintBuff, "123456789012345678901234567890123456789012345678");
		ret = FillPrintBuff(PrintBuff);
		if(ret < 0)
			goto end1;     
	//	ret = FillPrintBuff("PL");
	//	if(ret < 0)
	//		goto end1;
		SetPrintIndent(0);

		//SetPrintFont(16);  
		SetPrintFont(24);  
		memset(PrintBuff, 0x00, sizeof(PrintBuff));
		strcpy(PrintBuff, "测试程序, 当前正测试机型TYPE :D620D");
		ret = FillPrintBuff(PrintBuff);
		if(ret < 0)
			goto end1;             
	//	ret = FillPrintBuff("PL");
	//	if(ret < 0)
	//		goto end1;
		SetPrintIndent(0); 
		////////////////////
		//SetPrintFont(64);  
		SetPrintFont(48);  
		memset(PrintBuff, 0x00, sizeof(PrintBuff));
		strcpy(PrintBuff, "************");
		ret = FillPrintBuff(PrintBuff);
		if(ret < 0)
			goto end1;             
	//	ret = FillPrintBuff("PL");
	//	if(ret < 0)
	//		goto end1;
		SetPrintIndent(0);

		SetPrintIndent(0);   
		SetPrintFont(24);  
		memset(PrintBuff, 0x00, sizeof(PrintBuff));
		strcpy(PrintBuff, "<TYPE24>");
		ret = FillPrintBuff(PrintBuff);
		if(ret < 0)
			goto end1;             
	//	ret = FillPrintBuff("PL");
	//	if(ret < 0)
	//		goto end1;
		SetPrintIndent(0);

		SetPrintFont(24);  
		memset(PrintBuff, 0x00, sizeof(PrintBuff));
		strcpy(PrintBuff, "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEF");
		ret = FillPrintBuff(PrintBuff);
		if(ret < 0)
			goto end1;             
	//	ret = FillPrintBuff("PL");
	//	if(ret < 0)
	//		goto end1;
		SetPrintIndent(0); 

		SetPrintIndent(0);   
		SetPrintFont(24);  
		memset(PrintBuff, 0x00, sizeof(PrintBuff));
		strcpy(PrintBuff, "abcdefghijklmnopqrstuvwxyzabcde");
		ret = FillPrintBuff(PrintBuff);
		if(ret < 0)
			goto end1;             
	//	ret = FillPrintBuff("PL");
	//	if(ret < 0)
	//		goto end1;
		SetPrintIndent(0);

		SetPrintFont(24);
		memset(PrintBuff, 0x00, sizeof(PrintBuff));
		strcpy(PrintBuff, "12345678901234567890123456789012");
		ret = FillPrintBuff(PrintBuff);
		if(ret < 0)
			goto end1;     
	//	ret = FillPrintBuff("PL");
	//	if(ret < 0)
	//		goto end1;
		SetPrintIndent(0);

		SetPrintFont(24);
		memset(PrintBuff, 0x00, sizeof(PrintBuff));
		strcpy(PrintBuff, "1234.5678.9012.3456.7890.1234.56");
		ret = FillPrintBuff(PrintBuff);
		if(ret < 0)
			goto end1;     
	//	ret = FillPrintBuff("PL");
	//	if(ret < 0)
	//		goto end1;
		SetPrintIndent(0);

		SetPrintFont(24);
		memset(PrintBuff, 0x00, sizeof(PrintBuff));
		strcpy(PrintBuff, "~!@#$%^&*()_+-=/|,.?<>;:'{}[]-·");
		ret = FillPrintBuff(PrintBuff);
		if(ret < 0)
			goto end1;     
	//	ret = FillPrintBuff("PL");
	//	if(ret < 0)
	//		goto end1;
		SetPrintIndent(0);

		SetPrintFont(24);  
		memset(PrintBuff, 0x00, sizeof(PrintBuff));
		strcpy(PrintBuff, "测试程序 TYPE: D620D");
		ret = FillPrintBuff(PrintBuff);
		if(ret < 0)
			goto end1;             
	//	ret = FillPrintBuff("PL");
	//	if(ret < 0)
	//		goto end1;
		SetPrintIndent(0); 

		//SetPrintFont(64);  
		SetPrintFont(48);  
		memset(PrintBuff, 0x00, sizeof(PrintBuff));
		strcpy(PrintBuff, "************");
		ret = FillPrintBuff(PrintBuff);
		if(ret < 0)
			goto end1;             
	//	ret = FillPrintBuff("PL");
	//	if(ret < 0)
	//		goto end1;
		SetPrintIndent(0); 

		SetPrintIndent(0);   
		SetPrintFont(32);  
		memset(PrintBuff, 0x00, sizeof(PrintBuff));
		strcpy(PrintBuff, "<TYPE32>");
		ret = FillPrintBuff(PrintBuff);
		if(ret < 0)
			goto end1;             
	//	ret = FillPrintBuff("PL");
	//	if(ret < 0)
	//		goto end1;
		SetPrintIndent(0);

		SetPrintFont(32);  
		memset(PrintBuff, 0x00, sizeof(PrintBuff));
		strcpy(PrintBuff, "ABCDEFGHIJKLMNOPQRSTUVWX");
		ret = FillPrintBuff(PrintBuff);
		if(ret < 0)
			goto end1;             
	//	ret = FillPrintBuff("PL");
	//	if(ret < 0)
	//		goto end1;
		SetPrintIndent(0); 

		SetPrintIndent(0);   
		SetPrintFont(32);  
		memset(PrintBuff, 0x00, sizeof(PrintBuff));
		strcpy(PrintBuff, "abcdefghijklmnopqrstuvwx");
		ret = FillPrintBuff(PrintBuff);
		if(ret < 0)
			goto end1;             
	//	ret = FillPrintBuff("PL");
	//	if(ret < 0)
	//		goto end1;
		SetPrintIndent(0);

		SetPrintFont(32);
		memset(PrintBuff, 0x00, sizeof(PrintBuff));
		strcpy(PrintBuff, "123456789012345678901234");
		ret = FillPrintBuff(PrintBuff);
		if(ret < 0)
			goto end1;     
	//	ret = FillPrintBuff("PL");
	//	if(ret < 0)
	//		goto end1;
		SetPrintIndent(0);

		SetPrintFont(32);
		memset(PrintBuff, 0x00, sizeof(PrintBuff));
		strcpy(PrintBuff, "1234.5678.9012.3456.7890");
		ret = FillPrintBuff(PrintBuff);
		if(ret < 0)
			goto end1;     
	//	ret = FillPrintBuff("PL");
	//	if(ret < 0)
	//		goto end1;
		SetPrintIndent(0);

		SetPrintFont(32);
		memset(PrintBuff, 0x00, sizeof(PrintBuff));
		strcpy(PrintBuff, "~!@#$%^&*()_+-=/|,.?<>;");
		ret = FillPrintBuff(PrintBuff);
		if(ret < 0)
			goto end1;     
	//	ret = FillPrintBuff("PL");
	//	if(ret < 0)
	//		goto end1;
		SetPrintIndent(0);

		SetPrintFont(32);  
		memset(PrintBuff, 0x00, sizeof(PrintBuff));
		strcpy(PrintBuff, "测试程序D620D");
		ret = FillPrintBuff(PrintBuff);
		if(ret < 0)
			goto end1;             
	//	ret = FillPrintBuff("PL");
	//	if(ret < 0)
	//		goto end1;
		SetPrintIndent(0);  

		//开始打印    
		ret =StartPrint();
		if(ret != 0)
		{
			if(ret == -1)
				goto START_PRINT;
			else if(ret == -2)
				goto end2;
			else if(ret == -3)
				goto end1;
		}

		//清空打印缓冲区
		ClearPrintBuff();

		//SetPrintFont(64);
		SetPrintIndent(0);  
		SetPrintFont(48);  
		memset(PrintBuff, 0x00, sizeof(PrintBuff));
		strcpy(PrintBuff, "************");
		ret = FillPrintBuff(PrintBuff);
		if(ret < 0)
			goto end1;             
	///	ret = FillPrintBuff("PL");
	//	if(ret < 0)
	//		goto end1;

		SetPrintIndent(0);   
		SetPrintFont(48);  
		memset(PrintBuff, 0x00, sizeof(PrintBuff));
		strcpy(PrintBuff, "<TYPE48>");
		ret = FillPrintBuff(PrintBuff);
		if(ret < 0)
			goto end1;             
		//ret = FillPrintBuff("PL");
		//if(ret<0)goto end1;
		SetPrintIndent(0);

		SetPrintFont(48);  
		memset(PrintBuff, 0x00, sizeof(PrintBuff));
		strcpy(PrintBuff, "ABCDEFGHIJKLMNOPQRSTUVWX");
		ret = FillPrintBuff(PrintBuff);
		if(ret < 0)
			goto end1;             
		//ret = FillPrintBuff("PL");
	//	if(ret < 0)
		//	goto end1;
		SetPrintIndent(0); 

		SetPrintIndent(0);   
		SetPrintFont(48);  
		memset(PrintBuff, 0x00, sizeof(PrintBuff));
		strcpy(PrintBuff, "abcdefghijklmnop");
		ret = FillPrintBuff(PrintBuff);
		if(ret < 0)
			goto end1;             
	//	ret = FillPrintBuff("PL");
	//	if(ret < 0)
		//	goto end1;
		SetPrintIndent(0);

		SetPrintFont(48);
		memset(PrintBuff, 0x00, sizeof(PrintBuff));
		strcpy(PrintBuff, "1234567890123456");
		ret = FillPrintBuff(PrintBuff);
		if(ret < 0)
			goto end1;     
	//	ret = FillPrintBuff("PL");
	//	if(ret < 0)
	//		goto end1;
		SetPrintIndent(0);

		SetPrintFont(48);
		memset(PrintBuff, 0x00, sizeof(PrintBuff));
		strcpy(PrintBuff, "1234.5678.9012.3");
		ret = FillPrintBuff(PrintBuff);
		if(ret < 0)
			goto end1;     
	//	ret = FillPrintBuff("PL");
	//	if(ret < 0)
	//		goto end1;
		SetPrintIndent(0);

		SetPrintFont(48);
		memset(PrintBuff, 0x00, sizeof(PrintBuff));
		strcpy(PrintBuff, "~!@#$%^&*()_+-=/");
		ret = FillPrintBuff(PrintBuff);
		if(ret < 0)
			goto end1;     
	//	ret = FillPrintBuff("PL");
	//	if(ret < 0)
	//		goto end1;
		SetPrintIndent(0);

		SetPrintFont(48);  
		memset(PrintBuff, 0x00, sizeof(PrintBuff));
		strcpy(PrintBuff, "测试程序D620D");
		ret = FillPrintBuff(PrintBuff);
		if(ret < 0)
			goto end1;             
	//	ret = FillPrintBuff("PL");
	//	if(ret < 0)
	//		goto end1;
		SetPrintIndent(0); 

		//SetPrintFont(64);  
		SetPrintFont(48);  
		memset(PrintBuff, 0x00, sizeof(PrintBuff));
		strcpy(PrintBuff, "************");
		ret = FillPrintBuff(PrintBuff);
		if(ret < 0)
			goto end1;             
	//	ret = FillPrintBuff("PL");
	//	if(ret < 0)
	//		goto end1;
		SetPrintIndent(0);

		SetPrintIndent(0);   
		//SetPrintFont(64);  
		SetPrintFont(48);  
		memset(PrintBuff, 0x00, sizeof(PrintBuff));
		strcpy(PrintBuff, "<TYPE48>");
		ret = FillPrintBuff(PrintBuff);
		if(ret < 0)
			goto end1;             
	//	ret = FillPrintBuff("PL");
	//	if(ret < 0)
	//		goto end1;
		SetPrintIndent(0);

		//SetPrintFont(64);  
		SetPrintFont(48);  
		memset(PrintBuff, 0x00, sizeof(PrintBuff));
		strcpy(PrintBuff, "ABCDEFGHIJKLMNOPQRSTUVWX");
		ret = FillPrintBuff(PrintBuff);
		if(ret < 0)
			goto end1;             
	//	ret = FillPrintBuff("PL");
	//	if(ret < 0)
	//		goto end1;
		SetPrintIndent(0); 

		SetPrintIndent(0);   
		//SetPrintFont(64);  
		SetPrintFont(48);  
		memset(PrintBuff, 0x00, sizeof(PrintBuff));
		strcpy(PrintBuff, "abcdefghijkl");
		ret = FillPrintBuff(PrintBuff);
		if(ret < 0)
			goto end1;             
	//	ret = FillPrintBuff("PL");
	//	if(ret < 0)
	//		goto end1;
		SetPrintIndent(0);

		//SetPrintFont(64);  
		SetPrintFont(48);  
		memset(PrintBuff, 0x00, sizeof(PrintBuff));
		strcpy(PrintBuff, "123456789012");
		ret = FillPrintBuff(PrintBuff);
		if(ret < 0)
			goto end1;     
	//	ret = FillPrintBuff("PL");
	//	if(ret < 0)
	//		goto end1;
		SetPrintIndent(0);

		//SetPrintFont(64);  
		SetPrintFont(48);  
		memset(PrintBuff, 0x00, sizeof(PrintBuff));
		strcpy(PrintBuff, "1234.5678.90");
		ret = FillPrintBuff(PrintBuff);
		if(ret < 0)
			goto end1;     
	//	ret = FillPrintBuff("PL");
	//	if(ret < 0)
	//		goto end1;
		SetPrintIndent(0);

		//SetPrintFont(64);  
		SetPrintFont(48);  
		memset(PrintBuff, 0x00, sizeof(PrintBuff));
		strcpy(PrintBuff, "测试程序");
		ret = FillPrintBuff(PrintBuff);
		if(ret < 0)
			goto end1;             
	//	ret = FillPrintBuff("PL");
	//	if(ret < 0)
	//		goto end1;
		SetPrintIndent(0); 

		//SetPrintFont(64);  
		SetPrintFont(48);  
		memset(PrintBuff, 0x00, sizeof(PrintBuff));
		strcpy(PrintBuff, "************");
		ret = FillPrintBuff(PrintBuff);
		if(ret < 0)
			goto end1;             

		//设置打印字体大小
		//SetPrintFont(64);  
		SetPrintFont(48);  

		ret = FillPrintBuff("PL");
		if(ret < 0)
			goto end1;
		ret = FillPrintBuff("PL");
		if(ret < 0)
			goto end1;
		ret = FillPrintBuff("PL");
		if(ret < 0)
			goto end1;
		ret = FillPrintBuff("PL");
		if(ret < 0)
			goto end1;
		SetPrintIndent(0);

		//开始打印    
		ret =StartPrint();
		DebugOut("print error code:[%d]\n", ret);
		if(ret != 0)
		{
			if(ret == -1)
				goto START_PRINT;
			else if(ret == -2)
				goto end2;
			else if(ret == -3)
				goto end1;
		}
		
		
	}
	if(ret==0)
	{
		ClearLine(1,  9);
		TextOut(0,  4, ALIGN_CENTER,  "打印成功");
		WaitKey(1000);
	}
	else
	{
		ClearLine(1,  9);
		TextOut(0,  4, ALIGN_CENTER,  "打印失败");
		WaitKey(1000);
	}

	OkBeep();
	return OK;

end1:  

	FailBeep(); 
	ClearLine(1, 9);
	TextOut(0, 3, ALIGN_CENTER, "请检查打印机"); 
	TextOut(0, 4, ALIGN_CENTER, "打印失败");
	WaitKey(2000);

	return ERROR;

end2:  

	FailBeep(); 
	ClearLine(1, 9);
	TextOut(0, 3, ALIGN_CENTER, "电量不足"); 
	TextOut(0, 4, ALIGN_CENTER, "无法执行打印");
	WaitKey(2000);

	return ERROR;
}
コード例 #17
0
ファイル: fileview.cpp プロジェクト: alexlav/conemu
int FileViewer::ProcessKey(int Key)
{
	if (RedrawTitle && (((unsigned int)Key & 0x00ffffff) < KEY_END_FKEY || IsInternalKeyReal((unsigned int)Key & 0x00ffffff)))
		ShowConsoleTitle();

	if (Key!=KEY_F3 && Key!=KEY_IDLE)
		F3KeyOnly=false;

	switch (Key)
	{
#if 0
			/* $ 30.05.2003 SVS
			   Фича :-) Shift-F4 в редакторе/вьювере позволяет открывать другой редактор/вьювер
			   Пока закомментим
			*/
		case KEY_SHIFTF4:
		{
			if (!Opt.OnlyEditorViewerUsed)
				CtrlObject->Cp()->ActivePanel->ProcessKey(Key);

			return TRUE;
		}
#endif
		/* $ 22.07.2000 tran
		   + выход по ctrl-f10 с установкой курсора на файл */
		case KEY_CTRLF10:
		case KEY_RCTRLF10:
		{
			if (View.isTemporary())
			{
				return TRUE;
			}

			SaveScreen Sc;
			string strFileName;
			View.GetFileName(strFileName);
			CtrlObject->Cp()->GoToFile(strFileName);
			RedrawTitle = TRUE;
			return (TRUE);
		}
		// $ 15.07.2000 tran + CtrlB switch KeyBar
		case KEY_CTRLB:
		case KEY_RCTRLB:
			Opt.ViOpt.ShowKeyBar=!Opt.ViOpt.ShowKeyBar;

			if (Opt.ViOpt.ShowKeyBar)
				ViewKeyBar.Show();
			else
				ViewKeyBar.Hide0(); // 0 mean - Don't purge saved screen

			Show();
			KeyBarVisible = Opt.ViOpt.ShowKeyBar;
			return (TRUE);
		case KEY_CTRLSHIFTB:
		case KEY_RCTRLSHIFTB:
		{
			Opt.ViOpt.ShowTitleBar=!Opt.ViOpt.ShowTitleBar;
			TitleBarVisible = Opt.ViOpt.ShowTitleBar;
			Show();
			return (TRUE);
		}
		case KEY_CTRLO:
		case KEY_RCTRLO:

			if (!Opt.OnlyEditorViewerUsed)
			{
				if (FrameManager->ShowBackground())
				{
					SetCursorType(FALSE,0);
					WaitKey();
					FrameManager->RefreshFrame();
				}
			}

			return TRUE;
		case KEY_F3:
		case KEY_NUMPAD5:  case KEY_SHIFTNUMPAD5:

			if (F3KeyOnly)
				return TRUE;

		case KEY_ESC:
		case KEY_F10:
			FrameManager->DeleteFrame();
			return TRUE;
		case KEY_F6:

			if (!DisableEdit)
			{
				UINT cp=View.VM.CodePage;
				string strViewFileName;
				View.GetFileName(strViewFileName);
				File Edit;
				while(!Edit.Open(strViewFileName, FILE_READ_DATA, FILE_SHARE_READ|(Opt.EdOpt.EditOpenedForWrite?FILE_SHARE_WRITE:0), nullptr, OPEN_EXISTING, FILE_FLAG_SEQUENTIAL_SCAN))
				{
					if(!OperationFailed(strViewFileName, MEditTitle, MSG(MEditCannotOpen), false))
						continue;
					else
						return TRUE;
				}
				Edit.Close();
				__int64 FilePos=View.GetFilePos();
				DWORD flags = (GetCanLoseFocus()?FFILEEDIT_ENABLEF6:0)|(SaveToSaveAs?FFILEEDIT_SAVETOSAVEAS:0)|(DisableHistory?FFILEEDIT_DISABLEHISTORY:0);
				FileEditor *ShellEditor = new FileEditor(
					strViewFileName, cp, flags, -2,
					static_cast<int>(FilePos), // TODO: Editor StartChar should be __int64
					str_title.IsEmpty() ? nullptr: &str_title,
					-1,-1, -1, -1, delete_on_close );
				ShellEditor->SetEnableF6(TRUE);
				/* $ 07.05.2001 DJ сохраняем NamesList */
				ShellEditor->SetNamesList(View.GetNamesList());

				// Если переключаемся в редактор, то удалять файл уже не нужно
				SetTempViewName(L"");
				SetExitCode(0);

				FrameManager->DeleteFrame(this); // Insert уже есть внутри конструктора
				ShowTime(2);
			}

			return TRUE;

		case KEY_ALTSHIFTF9:
		case KEY_RALTSHIFTF9:
			// Работа с локальной копией ViewerOptions
			ViewerConfig(View.ViOpt, true);

			if (Opt.ViOpt.ShowKeyBar)
				ViewKeyBar.Show();

			View.Show();
			return TRUE;
		case KEY_ALTF11:
		case KEY_RALTF11:
			if (GetCanLoseFocus())
				CtrlObject->CmdLine->ShowViewEditHistory();

			return TRUE;
		default:
//      Этот кусок - на будущее (по аналогии с редактором :-)
//      if (CtrlObject->Macro.IsExecuting() || !View.ProcessViewerInput(&ReadRec))
		{
			/* $ 22.03.2001 SVS
			   Это помогло от залипания :-)
			*/
			if (!CtrlObject->Macro.IsExecuting())
				if (Opt.ViOpt.ShowKeyBar)
					ViewKeyBar.Show();

			if (!ViewKeyBar.ProcessKey(Key))
				return(View.ProcessKey(Key));
		}
		return TRUE;
	}
}
コード例 #18
0
ファイル: service_happy.c プロジェクト: AlexEvil/Bear
//-----------------------------------------------------
void ServiceSetDateHappy(void){
 unsigned char time_out;
 ReadDsRtcTime(); // for month ans date happy
 PlayServiceFile(PLAY_SERVICE,SERVICE_SET_DATE_FILE);
 while(1){
  PlayServiceFile(PLAY_SERVICE,SERVICE_SELECT_DATE);
  time_out = WaitKey(PREV,NEXT,PLAY,EXIT);
  if(time_out == false){ SystemReload(); }
  PlayBeep();
  if(KEY == EXIT){ CLEAR_KEYPAD(); break; }
  if(KEY == PREV){ // set month
   CLEAR_KEYPAD();
   PlayServiceFile(PLAY_SERVICE,SERVICE_CHANGE_MONTH);
   while(1){
    time_out = WaitKey(PREV,NEXT,-1,EXIT);
    if(time_out == false){ SystemReload(); }
    PlayBeep();
    if(KEY == EXIT){ CLEAR_KEYPAD();break; }
    if(KEY == PREV){ // month++
     CLEAR_KEYPAD();
     if(++AlarmHappy.month == 13){
      AlarmHappy.month = 1;
     }
    }
    if(KEY == NEXT){ // month--
     CLEAR_KEYPAD();
     if(--AlarmHappy.month == 0){
      AlarmHappy.month = 12;
     }
    }
    // PLAY CURRENT MONTH
    PlayServiceFile(PLAY_MONTH,(AlarmHappy.month-1));
   }
  }
  if(KEY == NEXT){ // set date
   CLEAR_KEYPAD();
   PlayServiceFile(PLAY_SERVICE,SERVICE_CHANGE_DAY);
   while(1){
    time_out = WaitKey(PREV,NEXT,-1,EXIT);
    if(time_out == false){ SystemReload(); }
    PlayBeep();
    if(KEY == EXIT){CLEAR_KEYPAD();break;}
    if(KEY == PREV){ // date++
     CLEAR_KEYPAD();
     if(++AlarmHappy.date == 29){
      if((AlarmHappy.month == 2) && (not_leap())){
       AlarmHappy.date = 1;
      }
     }
     if(AlarmHappy.date == 31){
      if((AlarmHappy.month==4)||(AlarmHappy.month==6)||(AlarmHappy.month==9)||(AlarmHappy.month==11)){
       AlarmHappy.date = 1;
      }
     }
     if(AlarmHappy.date == 32){
      AlarmHappy.date = 1;
     }
    }
    if(KEY == NEXT){ // date--
     CLEAR_KEYPAD();
     if(--AlarmHappy.date==0){
      if((AlarmHappy.month==4)||(AlarmHappy.month==6)||(AlarmHappy.month==9)||(AlarmHappy.month==11)){
       AlarmHappy.date=30;
      }else{
        AlarmHappy.date=31;
       }
      if(AlarmHappy.month == 2){
       AlarmHappy.date=29;
      }
      if((AlarmHappy.month == 2) && (not_leap())){
       AlarmHappy.date=28;
      }
     }
    }
    // PLAY CURRENT DATE
    PlayServiceFile(PLAY_DATE,(AlarmHappy.date-1));
   }
  }
 }
 return;
}
コード例 #19
0
ファイル: main.cpp プロジェクト: tsuro624/2012TeResAI
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow )
{
	ChangeWindowMode(TRUE);
	SetDrawScreen( DX_SCREEN_BACK);
	if(DxLib_Init()==-1)		// DXライブラリ初期化処理
	{
		return -1 ;			// エラーが起きたら直ちに終了
	}

	//デバック用にコンソールを出現させる
	AllocConsole();
	freopen("CONOUT$","w",stdout);
	freopen("CONIN$","r",stdin);


	Mode gamemode=OPENING;
	AI_T ai[AI_NUM];
	int death[AI_NUM]={0};
	Tagger tagger[TAGGER_NUM];
	int tagger_num = 0;
	int STAGE[WIDTH][HEIGHT]={0};
	int round=0;
	int end=0;

	while(ProcessMessage()!=-1){
		switch(gamemode){
		case OPENING:
			intro();
			gamemode=SETTING;
			break;
		case SETTING:
			make_Stage(STAGE);//マップ構成
			tagger_num = init_Tagger(tagger,STAGE);//鬼の初期化 //tagger_numは鬼の要素番号

			//for(int i=0;i<AI_NUM;i++){//AIの初期化 //henteko : aiをすべてinit_Aiに渡す
			init_Ai(ai,STAGE);
			//}

			round++;
			gamemode=RUNNING;

			break;
		case RUNNING:
			
			if(tagger[tagger_num].step==0){
				//tagger[tagger_num].act=next_Tagger(tagger[tagger_num],STAGE,ai);
				tagger[tagger_num].act=tagger[tagger_num].moveFunc(tagger[tagger_num].x,tagger[tagger_num].y,STAGE,ai); //AIと一緒で、moveFunc使う
			}
			for(int i=0;i<AI_NUM;i++){
				if(ai[i].step==0){
					setview_Ai(&ai[i],STAGE);
					//ai[i].act=next_Ai(ai[i].view); //henteko : 下のmoveFunc()を使うためコメントアウト
					ai[i].act = ai[i].moveFunc(ai[i].view);
				}
			}

			update_Tagger(&tagger[tagger_num],STAGE);
			for(int i=0;i<AI_NUM;i++){
				update_Ai(&ai[i],STAGE);
			}
			update_stage(STAGE,ai,tagger[tagger_num]);
			
			ClearDrawScreen();
			draw(STAGE,ai,tagger[tagger_num]);
			DrawFormatString(30,30,GetColor(0,255,255),"ROUND%d",round);

			
			if(tagger[tagger_num].step==0){
				for(int i=0;i<AI_NUM;i++){
					if(death_Ai(ai[i],tagger[tagger_num])==1){
						death[i]++;
						const char* str = strcat(ai[i].name , "がつかまりました"); //文字列連結
						DrawString(100,240,str,GetColor(255,0,0));
						WaitTimer(3000);
						if(round>=ROUND_MAX){
							gamemode=ENDING;
						}
						else{
							gamemode=SETTING;
						}
						break;
					}
				}
			}
			if(CheckHitKey(KEY_INPUT_R)==1){
				gamemode=SETTING;
			}
			break;
		case ENDING:
			result(ai,death);
			WaitKey();
			end=1;
			break;
		default:
			break;
		}
		if(end==1 || CheckHitKey(KEY_INPUT_ESCAPE))break;
		ScreenFlip();
	}

	DxLib_End() ;				// DXライブラリ使用の終了処理

	return 0 ;				// ソフトの終了 
}
コード例 #20
0
ファイル: computeFS.c プロジェクト: Dreamcatcher-GIS/C-KXO
int computeFS ()
{
	uint refresh = 2,key;
	int  index = 0,i,hcs;
	char ch;
	double ht,hz,v,bh,hd;
	double value[4] = {0.0,0.0,0.0,0.0};
	const char * context[] = {"","","",""};
	while(1){
			if (refresh == REFRESH_ALL){
			refresh = REFRESH_PART;
			Bdisp_AllClr_VRAM();
			SetMyFont(&stHz12x12,&stAsc6x12);  //¶¨Òå×ÖÌå´óС
			DispStr(2,1, "Ïß ");
			DispStr(2,12,"· ");
			DispStr(2,25,"·´ ");
			DispStr(2,38,"Ëã ");
			ShowTitle(TITLE);
			DispStr(17,0, "×ø±êX: ");
		    DispStr(17,13,"×ø±êY: ");
			DispStr(17,26,"×ø±êZ: ");
			//DispStr(17,39,"×ø±êZ: ");

			for (i=0;i<4;++i){
				PrintXY(50,2+i*12,(uchar*)context[i],0);
			}
			PrintIcon (0,"Rou",0);
			PrintIcon (1,"Set",0);
			PrintIcon (2,"Disp",0);
			PrintIcon (3,"=0=",1);
			PrintIcon (4,"Save",1);
			PrintIcon (5,"?",0);
		}
		if (refresh == REFRESH_PART){
			for (i=0;i<4;++i){
		     PrintFloat(value[i],48,0+i*12,index==i,4);	//ÊäÈë¿òλÖÃ
			}
			refresh = 0;
		}
		GetKey(&key);
		switch(key){
			case KEY_CTRL_F1	:
				SET();	refresh=REFRESH_ALL;	break;
			case KEY_CTRL_F2	:
				ZSSET();	refresh=REFRESH_ALL;	break;
			case KEY_CTRL_F3	:
				RestoreDisp(SAVEDISP_PAGE1);refresh=REFRESH_ALL;WaitKey();break;
			case KEY_CTRL_F4	:
			case KEY_CTRL_F5	:
				Nodata();	refresh=REFRESH_ALL;	break;
			case KEY_CTRL_F6	:
				About();	refresh=REFRESH_ALL;	break;
			case KEY_CTRL_UP	:
				refresh=REFRESH_PART;	--index;	break;
			case KEY_CTRL_DOWN	:
				refresh=REFRESH_PART;	++index;	break;
			case KEY_CTRL_EXE:
			if (index<3){
				refresh = REFRESH_PART;	index++;
			}else{
				yscs.x1 = value[0];	yscs.y1 = value[1];
				hz = value[2];	ht = value[3];
				refresh=REFRESH_ALL;
				//yscs.k=0.0;
				yscs.k=xy_to_sdSrd( yscs.x1, yscs.y1, 0);
				yscs.d=xy_to_sdSrd( yscs.x1, yscs.y1, 1);
				//yscs.k=xy_to_sd( yscs.x1, yscs.y1, 0);
				//yscs.d=xy_to_sd( yscs.x1, yscs.y1, 1);
				
				//FS();
				GC();
				HP();
				if	(yscs.d<0)	hcs=-1;	//Æ«¾à×ó²à
		 		if	(yscs.d>=0)	hcs=1; //Æ«¾àÓÒ²à
		 		if	(yscs.d*hcs<=zfset.zsp)	hd=0;  //
	 			if	(zfset.zsh==0)	hd=0;
	 			if	(yscs.d*hcs>zfset.zsp && yscs.d*hcs-zfset.zsp<zfset.zsh) hd=(yscs.d*hcs-zfset.zsp)*hcs;
				if	(yscs.d*hcs-zfset.zsp>=zfset.zsh)	hd=zfset.zsh*hcs;
				bh=yscs.gch+(yscs.hpd*hd)-ht;
				Bdisp_AllClr_VRAM();
				DispStr(2,0, "¼Æ ");
			    DispStr(2,12,"Ëã ");
			    DispStr(2,26,"½á ");
			    DispStr(2,39,"¹û ");
				ShowTitle(TITLE);
				DispStr(17,0,"×®ºÅ "); 
			    DispStr(17,13,"Æ«¾à ");
			    DispStr(17,26,"ÌîÍÚ: ");
				DispStr(17,39,"»ù¸ß: ");
				PrintfXY (48,2.5,0,"%.4f",yscs.k); 
				PrintfXY (48,15,0,"%.4f",yscs.d);
				PrintfXY (48,28,0,"%.4f",yscs.gch);
				PrintfXY (48,42,0,"%.4f",yscs.hpd);
				//PrintfXY (22,40,0," H= %.3f",bh);
				//PrintfXY (22,48,0," H-Z= %.3f",hz-bh);
				SaveDisp(SAVEDISP_PAGE1);
				WaitKey();
				++index;
			}break;
			case KEY_CTRL_EXIT:
				return 0;
			default:
				if ((ch=GetPressNumChar(key))!=0){
					char buf[14];
					int        r;
					refresh = REFRESH_PART;
					buf[0] = ch;   buf[1] = '\0';
					r = InputString (48,0+index*12,buf,0,12);  //ÊäÈë¿òλÖÃ
					if (r != KEY_CTRL_EXIT){

						value[index] = atof(buf);
						if	(r==KEY_CTRL_DOWN)	++index;
						if	(r==KEY_CTRL_UP)	--index;
						if (r==KEY_CTRL_EXE && index<3)	++index;
					}
					break;
				}
		}
		if (index >=4) index = 2;
		if (index < 0) index = 3;
	}
}
コード例 #21
0
ファイル: map.c プロジェクト: huangda1982/jinyong
//于主地图行走
void InMap()
{
	char* aaa[] = {
		"過招嗎?",
		"過招",
		"罷了"
	};
	printf("%s\n", ShowYesNoBox(aaa) ? "過招" : "罷了");

	uint32 next_time = SDL_GetTicks() + 3000;
	g_inGame = EmInGameMap;

	g_mStep = 0;
	g_mRest = 0;
	g_mShip = 0;

	CmdScreenFadeIn(NULL);

	WaitKey();

	//PlayMp3(16, -1);

	//事件轮询(并非等待)
	SDL_EnableKeyRepeat(KEY_REPEAT_DELAY, KEY_REPEAT);
	while (TRUE) {
		//如果当前处于标题画面, 则退出, 用于战斗失败
		//***********

		int mx = g_mx;
		int my = g_my;
		switch (g_mFace) {
			case 0:
				mx--;
				break;
			case 1:
				my++;
				break;
			case 2:
				my--;
				break;
			case 3:
				mx++;
				break;
			default:
				break;
		}

		if (GoIn(mx, my)) {
			CmdScreenFadeOut(NULL);
			InScence(g_entrances[mx][my], EmInScenceEnter);
			g_inGame = EmInGameMap;

			g_mStep = 0;
			g_mRest = 0;
			g_mShip = 0;

			CmdScreenFadeIn(NULL);
		}

		//主地图动态效果, 实际仅有主角的动作
		uint32 now = SDL_GetTicks();
		if (g_mStep) {
			g_mRest = 0;
			next_time = now + 3000;
		} else if (now > next_time) {
			if (++g_mRest >= REST_PIC_NUM + 1) {
				g_mRest = 0;
				next_time = now + 3000;
			} else {
				next_time = now + 500;
			}
		}

		DrawMap();

		int key = PollKey();
		switch (key) {
			case KEYUP:
				g_mStep = 0;
				g_mShip = 0;
				break;
			case SDLK_UP:
				g_mFace = 0;
				if (++g_mStep >= WALK_PIC_NUM) g_mStep = 1;
				if (++g_mShip >= SHIP_PIC_NUM) g_mShip = 1;

				if (GoThroughMap(g_mx - 1, g_my)) {
					g_mx--;
				}
				break;
			case SDLK_RIGHT:
				g_mFace = 1;
				if (++g_mStep >= WALK_PIC_NUM) g_mStep = 1;
				if (++g_mShip >= SHIP_PIC_NUM) g_mShip = 1;

				if (GoThroughMap(g_mx, g_my + 1)) {
					g_my++;
				}
				break;
			case SDLK_LEFT:
				g_mFace = 2;
				if (++g_mStep >= WALK_PIC_NUM) g_mStep = 1;
				if (++g_mShip >= SHIP_PIC_NUM) g_mShip = 1;

				if (GoThroughMap(g_mx, g_my - 1)) {
					g_my--;
				}
				break;
			case SDLK_DOWN:
				g_mFace = 3;
				if (++g_mStep >= WALK_PIC_NUM) g_mStep = 1;
				if (++g_mShip >= SHIP_PIC_NUM) g_mShip = 1;

				if (GoThroughMap(g_mx + 1, g_my)) {
					g_mx++;
				}
				break;
			case SDLK_ESCAPE:
				//***MenuEsc;
				break;
			default:
				break;
		}
	}
}
コード例 #22
0
ファイル: main.cpp プロジェクト: elfmz/far2l
int FarAppMain(int argc, char **argv)
{

	Opt.IsUserAdmin = (geteuid()==0);

	_OT(SysLog(L"[[[[[[[[New Session of FAR]]]]]]]]]"));
	FARString strEditName;
	FARString strViewName;
	FARString DestNames[2];
	int StartLine=-1,StartChar=-1;
	int CntDestName=0; // количество параметров-имен каталогов
	/*$ 18.04.2002 SKV
	  Попользуем floating point что бы проинициализировался vc-ный fprtl.
	*/
#ifdef _MSC_VER
	float x=1.1f;
	wchar_t buf[15];
	swprintf(buf,L"%f",x);
#endif
	// если под дебагером, то отключаем исключения однозначно,
	//  иначе - смотря что указал юзвер.
#if defined(_DEBUGEXC)
	Opt.ExceptRules=-1;
#else
	Opt.ExceptRules=-1;//IsDebuggerPresent()?0:-1;
#endif
//  Opt.ExceptRules=-1;

#ifdef __GNUC__
	Opt.ExceptRules=0;
#endif

//_SVS(SysLog(L"Opt.ExceptRules=%d",Opt.ExceptRules));
	SetRegRootKey(HKEY_CURRENT_USER);
	Opt.strRegRoot = L"Software/Far2";
	// По умолчанию - брать плагины из основного каталога
	Opt.LoadPlug.MainPluginDir=TRUE;
	Opt.LoadPlug.PluginsPersonal=TRUE;
	Opt.LoadPlug.PluginsCacheOnly=FALSE;

	g_strFarPath = g_strFarModuleName;

	bool translated = TranslateFarString<TranslateInstallPath_Bin2Share>(g_strFarPath);
	CutToSlash(g_strFarPath, true);
	if (translated) {
		// /usr/bin/something -> /usr/share/far2l
		g_strFarPath+= L"/" FAR_BASENAME;
	}
		
	WINPORT(SetEnvironmentVariable)(L"FARHOME", g_strFarPath);
	AddEndSlash(g_strFarPath);

	// don't inherit from parent process in any case
	WINPORT(SetEnvironmentVariable)(L"FARUSER", nullptr);

	WINPORT(SetEnvironmentVariable)(L"FARADMINMODE", Opt.IsUserAdmin?L"1":nullptr);

	// макросы не дисаблим
	Opt.Macro.DisableMacro=0;
	for (int I=1; I<argc; I++)
	{
		std::wstring arg_w = MB2Wide(argv[I]);
		if ((arg_w[0]==L'/' || arg_w[0]==L'-') && arg_w[1])
		{
			switch (Upper(arg_w[1]))
			{
				case L'A':

					switch (Upper(arg_w[2]))
					{
						case 0:
							Opt.CleanAscii=TRUE;
							break;
						case L'G':

							if (!arg_w[3])
								Opt.NoGraphics=TRUE;

							break;
					}

					break;
				case L'E':

					if (iswdigit(arg_w[2]))
					{
						StartLine=_wtoi((const wchar_t *)&arg_w[2]);
						wchar_t *ChPtr=wcschr((wchar_t *)&arg_w[2],L':');

						if (ChPtr)
							StartChar=_wtoi(ChPtr+1);
					}

					if (I+1<argc)
					{
						strEditName = argv[I+1];
						I++;
					}

					break;
				case L'V':

					if (I+1<argc)
					{
						strViewName = argv[I+1];
						I++;
					}

					break;
				case L'M':

					switch (Upper(arg_w[2]))
					{
						case 0:
							Opt.Macro.DisableMacro|=MDOL_ALL;
							break;
						case L'A':

							if (!arg_w[3])
								Opt.Macro.DisableMacro|=MDOL_AUTOSTART;

							break;
					}

					break;
				case L'I':
					Opt.SmallIcon=TRUE;
					break;
				case L'X':
					Opt.ExceptRules=0;
#if defined(_DEBUGEXC)

					if (Upper(arg_w[2])==L'D' && !arg_w[3])
						Opt.ExceptRules=1;

#endif
					break;

				case L'C':

					if (Upper(arg_w[2])==L'O' && !arg_w[3])
					{
						Opt.LoadPlug.PluginsCacheOnly=TRUE;
						Opt.LoadPlug.PluginsPersonal=FALSE;
					}

					break;
				case L'?':
				case L'H':
					ControlObject::ShowCopyright(1);
					show_help();
					return 0;
#ifdef DIRECT_RT
				case L'D':

					if (Upper(arg_w[2])==L'O' && !arg_w[3])
						DirectRT=1;

					break;
#endif
				case L'W':
					{
						Opt.WindowMode=TRUE;
					}
					break;
			}
		}
		else // простые параметры. Их может быть max две штукА.
		{
			if (CntDestName < 2)
			{
				if (IsPluginPrefixPath((const wchar_t *)arg_w.c_str()))
				{
					DestNames[CntDestName++] = (const wchar_t *)arg_w.c_str();
				}
				else
				{
					apiExpandEnvironmentStrings((const wchar_t *)arg_w.c_str(), DestNames[CntDestName]);
					Unquote(DestNames[CntDestName]);
					ConvertNameToFull(DestNames[CntDestName],DestNames[CntDestName]);

					if (apiGetFileAttributes(DestNames[CntDestName]) != INVALID_FILE_ATTRIBUTES)
						CntDestName++; //???
				}
			}
		}
	}

	//Настройка OEM сортировки. Должна быть после CopyGlobalSettings и перед InitKeysArray!
	//LocalUpperInit();
	//InitLCIDSort();
	//Инициализация массива клавиш. Должна быть после CopyGlobalSettings!
	InitKeysArray();
	//WaitForInputIdle(GetCurrentProcess(),0);
	std::set_new_handler(nullptr);

	if (!Opt.LoadPlug.MainPluginDir) //если есть ключ /p то он отменяет /co
		Opt.LoadPlug.PluginsCacheOnly=FALSE;

	if (Opt.LoadPlug.PluginsCacheOnly)
	{
		Opt.LoadPlug.strCustomPluginsPath.Clear();
		Opt.LoadPlug.MainPluginDir=FALSE;
		Opt.LoadPlug.PluginsPersonal=FALSE;
	}

	InitConsole();
	GetRegKey(L"Language",L"Main",Opt.strLanguage,L"English");

	if (!Lang.Init(g_strFarPath,true,MNewFileName))
	{
		ControlObject::ShowCopyright(1);
		LPCWSTR LngMsg;
		switch(Lang.GetLastError())
		{
		case LERROR_BAD_FILE:
			LngMsg = L"\nError: language data is incorrect or damaged.\n\nPress any key to exit...";
			break;
		case LERROR_FILE_NOT_FOUND:
			LngMsg = L"\nError: cannot find language data.\n\nPress any key to exit...";
			break;
		default:
			LngMsg = L"\nError: cannot load language data.\n\nPress any key to exit...";
			break;
		}
		Console.Write(LngMsg,StrLength(LngMsg));
		Console.FlushInputBuffer();
		WaitKey(); // А стоит ли ожидать клавишу??? Стоит
		return 1;
	}

	WINPORT(SetEnvironmentVariable)(L"FARLANG",Opt.strLanguage);
	SetHighlighting();
	initMacroVarTable(1);

	if (Opt.ExceptRules == -1)
	{
		GetRegKey(L"System",L"ExceptRules",Opt.ExceptRules,1);
	}

	//ErrorMode=SEM_FAILCRITICALERRORS|SEM_NOOPENFILEERRORBOX|(Opt.ExceptRules?SEM_NOGPFAULTERRORBOX:0)|(GetRegKey(L"System/Exception", L"IgnoreDataAlignmentFaults", 0)?SEM_NOALIGNMENTFAULTEXCEPT:0);
	//SetErrorMode(ErrorMode);

	int Result=MainProcessSEH(strEditName,strViewName,DestNames[0],DestNames[1],StartLine,StartChar);

	EmptyInternalClipboard();
	doneMacroVarTable(1);
	VTShell_Shutdown();//ensure VTShell deinitialized before statics destructors called
	_OT(SysLog(L"[[[[[Exit of FAR]]]]]]]]]"));
	return Result;
}
コード例 #23
0
ファイル: service_alarm.c プロジェクト: AlexEvil/Bear
//-----------------------------------------------------
void ServiceSetTrackAlarm(unsigned char number_alarm){
 unsigned char time_out;
 unsigned char track;
 unsigned char ret_code;
 track = 0;
 PlayServiceFile(PLAY_SERVICE,SERVICE_ALARM_SELECT_MELODY_FILE);
 PlayServiceFile(PLAY_SERVICE,SERVICE_ALARM_SELECT_MELODY);
 while(1){
  ret_code = PlayAlarmFile(track);
  if(ret_code == 0){
   time_out = WaitKey(PREV,NEXT,PLAY,EXIT);
   if(time_out == false){ SystemReload(); }
   PlayBeep();
   if(KEY == EXIT){ CLEAR_KEYPAD(); break; }
   // save alarm melody
   if(KEY == PLAY){
    CLEAR_KEYPAD();
    Alarm[number_alarm].track = track;
   }
   // next alarm melody
   if(KEY == PREV){
    CLEAR_KEYPAD();
    track++;
    if(track >= MAX_ALARM_TRACK){
     track = 0;
    }
   }
   // prev alarm melody
   if(KEY == NEXT){
    CLEAR_KEYPAD();
    if(track == 0){
     track = (unsigned char)(MAX_ALARM_TRACK - 1);
    }else{
      track--;
     }
   }
  }else{
    // exit
    if(ret_code == 1){
     break;
    }
    switch(ret_code){
     case 2 : // save
              Alarm[number_alarm].track = track;
              break;
     case 3 : // next
              track++;
              if(track >= MAX_ALARM_TRACK){
               track = 0;
              }
              break;
     case 4 : // prev
              if(track == 0){
               track = (unsigned char)(MAX_ALARM_TRACK - 1);
              }else{
                track--;
               }
             break;
    }
   }

 }
 return;
}