Example #1
0
/******************************************************************************
 函数名称:Get_Passwd
 功能描述:验证密码进入设置POS号状态
 参数描述:
 参数名称:	输入/输出?	类型		描述

 返  回  值:ok(0)-验证成功
				 notok(0xFF)-验证失败

 作      者	:刘及华
 日      期:2005-05-20
 修改历史:
		日期		修改人		修改描述
		------		---------	-------------
******************************************************************************/
INT8U Get_Passwd(void)
{
	INT8U i;
	INT8U key_seq[20];
	INT8S *password = (INT8S *)"22995757";
	INT8U buf[20];

	ToggleWD();

	Lcd_Cls();
	lcddisp(1, 1, "请输入密码: ");

	Beep(50);
	SleepMs(50);
	Beep(50);
	SleepMs(50);
	Beep(50);
	SleepMs(1000);

	for ( i=0; i<8; i++ )			   //取得8个按键输入
	{
		do				   //only accept 0-9, '+', '-'
		{
			key_seq[i] = get_key();
		}while ( !( (key_seq[i]>='0' && key_seq[i]<='9') ) );

		buf[strlen((void *)buf) - 1] = '\0';
		strcat((void *)buf, (void *)"*_");
// 		LCD_Display_Str(2, 0, buf, NORMAL);
		lcddisp(2, 1, buf);

//      OSTimeDlyHMSM(0, 0, 0, 150);
		OSTimeDlyHMSM(0, 0, 0, 100);
	}

	key_seq[i] = '\0';

	if ( strcmp((void *)key_seq, (void *)password) != 0 )	//密码错误
	{
		lcddisp(2, 2, "密码错误");
		OSTimeDlyHMSM(0, 0, 1, 0);
		return notok;
	}

	lcddisp(2, 2, "密码正确");
	lcddisp(3, 0, "执行格式化操作..");

	OS_ENTER_CRITICAL();

	InitImportantParameter();

	OS_EXIT_CRITICAL();

	OSTimeDlyHMSM(0, 0, 1, 0);		//为了显示能看清

	resetpos();

	return ok;
}
Example #2
0
void TypingPutChar(FILE *stream, int c)
{
  if (c == NEWLINE && TypingLastChar == NEWLINE) return;
  fputc(c, stream);
  fflush(stream);
  if (c == TypingLastChar) SleepMs(NORMAL_PAUSE+Roll(20));
  else if (c == SPACE) SleepMs(SPACE_PAUSE+Roll(SPACE_PAUSE));
  else SleepMs(NORMAL_PAUSE+Roll(4*NORMAL_PAUSE));
  TypingLastChar = c;
}
Example #3
0
File: main.c Project: 12019/zibogas
/******************************************************************************
 函数名称:TimeModify
 功能描述:要求输入时间,进行修改
 参数描述:
 参数名称:	输入/输出?	类型		描述
				
 返  回  值:无
				   
 作      者	:许岩
 日      期:2004-09-02
 修改历史:
		日期		修改人		修改描述
		------		---------	-------------
******************************************************************************/
void TimeModify(void)
{
	INT8U i = 0;
	INT8U input[50];
	INT8U buf[50];
	BUS_TIME ltime;

	for (;;)
	{
		EA_vCls();
		Get_Time(&ltime);
		EA_vDisp(1, 1, "当前时间:");
		sprintf((void *)buf, "%02X%02X-%02X-%02X-%02X:%02X:%02X", ltime.century, ltime.year, ltime.month,
				ltime.day, ltime.hour, ltime.minute, ltime.second);
		EA_vDisp(2, 1, (void *)buf);
		EA_vDisp(3, 1, "请输入新的时间:");
		(void)EA_ucClrKeyBuf();
		strcpy((void *)input, "");

		i = EA_ucGetInputStr(4, 1, 20, EM_BIG_FONT | EM_MODE_NUMBER | EM_ALIGN_LEFT | EM_SHOW_ORIGINALLY
							 , 14, 14, 0, (void *)input);
		//  	sprintf(dbuf, "%s", input);
		//  	EA_vDisp(3, 1, dbuf);
		//  	sprintf(dbuf, "result:%02X", i);
		//  	EA_vDisp(4, 1, dbuf);
		if ( i == EM_ABOLISH )
			return;
		if ( i != EM_SUCCESS )
			continue;
		ltime.century = (ascii_to_hex(input[0]) << 4) | ascii_to_hex(input[1]);
		ltime.year = (ascii_to_hex(input[2]) << 4) | ascii_to_hex(input[3]);
		ltime.month = (ascii_to_hex(input[4]) << 4) | ascii_to_hex(input[5]);
		ltime.day = (ascii_to_hex(input[6]) << 4) | ascii_to_hex(input[7]);
		ltime.hour = (ascii_to_hex(input[8]) << 4) | ascii_to_hex(input[9]);
		ltime.minute = (ascii_to_hex(input[10]) << 4) | ascii_to_hex(input[11]);
		ltime.second = (ascii_to_hex(input[12]) << 4) | ascii_to_hex(input[13]);

		i = CheckTimeFormat(&ltime);
		if ( i != ok )
		{
			EA_vCls();
			EA_vDisp(4, 1, "时间格式错误");
			SleepMs(1500);
			//  		EA_vCls();
			continue;
		}

		Modify_Time(&ltime);
		EA_vCls();
		EA_vDisp(4, 1, "时间修改成功");
		SleepMs(1500);
		break;
	}
}
Example #4
0
/*****************************************************************
 函数原型:	System_Init()
 功能描述:器件类初始化
 参数描述:	
				 
 返回值:	无
 
 作  者:	大连现代/刘及华
 日  期:	2004-09-17
 修改历史:
		日期		修改人		修改描述
		------		---------	-------------
*****************************************************************/
void System_Init(void)
{
	INT8U   i;

	ToggleWD();

	SetBell(OFF);

	SleepMs(200);

	Start_beep();								/* 开机后蜂鸣器提示*/
	SleepMs(200);

	/* 全局变量初始化*/

	//DevStat初始化
	memset((void*)&DevStat, 0x00, sizeof(DevStat));
	ReadParam();

	DevStat.err_occured = FALSE;
	DevStat.err_code = 0x0000;
	DevStat.id = 0x10;
	DevStat.mode = AUTO;
	DevStat.passwd = 0;
	DevStat.MOD_REG.reg[0x0018] = 0x00;	//禁止继电器动作

	i = query_key_nsnd();
	if ( i == KEY_CANCEL )	 //开机时按下CANCEL键,进入格式化状态
	{
		(void)Get_Passwd();
	}
	
	memset(PageBuf1, 0xFF, sizeof(PageBuf1));
	FlashPageRead512(10, PageBuf1, 0);
	memcpy((void *)&DevStat.reset_times, (void *)PageBuf1, sizeof(DevStat.reset_times));
	if(DevStat.reset_times >= 254)
	{
		DevStat.reset_times = 0;
	}
	DevStat.reset_times++;
	memcpy((void *)PageBuf1, (void *)&DevStat.reset_times, sizeof(DevStat.reset_times));
	FlashPageWrite512(10, PageBuf1, 0);

	DisplayTimeEN = TRUE;		//允许刷新时间任务刷新时间

#ifdef QUICK_DEBUG
#else
	DisplayVersion(VERSION);
	DisplayID(DevStat.id);
	SleepMs(1000);
#endif

}
Example #5
0
PRT_VALUE *P_FUN_StartTimer_IMPL(PRT_MACHINEINST *context)
{
	PRT_MACHINEINST_PRIV *p_tmp_mach_priv = (PRT_MACHINEINST_PRIV *)context;
	PRT_VALUE *p_tmp_ret = NULL;
	PRT_FUNSTACK_INFO p_tmp_frame;

	// pop frame
	PrtPopFrame(p_tmp_mach_priv, &p_tmp_frame);

	PRT_VALUE* timerMachineId = p_tmp_frame.locals[0];
	PRT_MACHINEINST* timerMachine = PrtGetMachine(context->process, timerMachineId);
	TimerContext *timerContext = (TimerContext *)timerMachine->extContext;

	int timeout_value = p_tmp_frame.locals[1]->valueUnion.nt;
	
	SleepMs(timeout_value);

	PRT_VALUE *ev = PrtMkEventValue(P_EVENT_TIMEOUT);
	PRT_MACHINEINST* clientMachine = PrtGetMachine(context->process, timerContext->client);
	PrtSend(context, clientMachine, ev, context->id, PRT_FALSE);
	PrtFreeValue(ev);

	// free the frame
	PrtFreeLocals(p_tmp_mach_priv, &p_tmp_frame);
	return NULL;
}
Example #6
0
/***	DoPulseWidth
**
**	Parameters:
**		none
**
**	Return Value:
**		none
**
**	Errors:
**		none
**
**	Description:
**		Demonstrates servo control using the pulse width control functions
*/
void DoPulseWidth() {
	/* Set some servo pulse widths.
	*/
	printf("Setting absolute pulse width\n\n");
	for (ichn = 0; ichn < cServos; ichn++) {
		// DEMC API Call: DemcServoGetMin
		DemcServoGetMin(hif, ichn, &tusMin);

		// DEMC API Call: DemcServoGetMax
		DemcServoGetMax(hif, ichn, &tusMax);
	
		for (tusWdt = tusMin; tusWdt <= tusMax; tusWdt += 25) {
			// DEMC API Call: DemcServoSetWidth
			DemcServoSetWidth(hif, ichn, tusWdt);

			// DEMC API Call: DemcServoGetWidth
			DemcServoGetWidth(hif, ichn, &tusTmp);
			printf("  Chan: %d, SetWdt=%5d, GetWdt=%5d\n", ichn, tusWdt, tusTmp);
			SleepMs(100);
		}
		
		printf("\n");	
	}
	
}
Example #7
0
File: main.c Project: 12019/zibogas
/*****************************************************************
 函数原型:System_Init()
 功能描述:参数等初始化
 参数描述:

 返回值:   OK ?  NOTOK

 作  者:   许岩/刘及华
 日  期:   2012-11-24
 修改历史:
		日期        修改人      修改描述
		------      ---------   -------------
*****************************************************************/
INT8U System_Init(void)
{
	INT8U   i = 0;
	INT16U  key = EM_key_NOHIT;

	EA_vCls();
	EA_ucSetInverse(EM_lcd_INVOFF);
	EA_vDisp(1, 1, "    版本号: ");
	EA_vDisp(1, 13, VERSION);
	SleepMs(2000);
	EA_vCls();
	EA_vDisp(2, 1, "   系统初始化中...  ");
	key = EA_uiInkeyMs(2000);

	if ( key == EM_key_F3 )
	{
		format_process();    		  //可以进行系统格式化操作
	}
	//重要参数部分初始化函数
	appfile_Init();

	memset((void *)&DevStat, 0x00, sizeof(DevStat));

	i = ReadParam();  
	        
	if ( i != ok )
	{
		param_factory_default(0);     //格式化重要参数DEV.STATE
	}

	DevStat.POS_type = POS_T_NORMAL;  //盒类型为正常采集


	DevStat.record_number = query_rec_num();

	memset((void *)&CardInfo, 0x00, sizeof(CardInfo));        //清除卡的信息
	memset((void *)&ErrCardInfo, 0x00, sizeof(ErrCardInfo));  //清除错误卡的信息

	//这里应该添加一个函数,负责管理所有的设备的句柄结构!!!!
	i = Device_Handle_Init();
	if( i != ok)
	{
		return notok;
	}

	if( LowBatteryDisplay() != ok )     //电池电量检测
	{	
		lcddisperr("电池电量检测失败");
		return notok;
	}
	if( SystemCheck() != ok )          //PSAM系统检测
	{
		lcddisperr("PSAM卡检测失败");
		return notok;
	}
	return ok;
}
Example #8
0
void TWITerm_TransmitChar(uint8_t c) 
{
	TWISlave *twi = &g_TWISlave;
	twi->term_tx_buf[TERM_TX_BUF_WP(twi)] = c;
	barrier();
	twi->term_tx_buf_wp++;
	if((twi->term_tx_buf_wp & 3) == 0) {
		SleepMs(1);	
	}
}
Example #9
0
/**
 *********************************************************************************
 * \fn static void RSema_Test(void);
 *
 *********************************************************************************
 */
static void
RSema_Test(void) 
{
	Timer_Start(&tmrRSemaToggle,0);
	SleepMs(100);
	Timer_Start(&tmrRSemaToggle,4000);
	Con_Printf_P("Trying to lock rsema\n");
	Mutex_Lock(&testRSema);
	Con_Printf_P("Success, Unlocking rsema\n");
	Mutex_Unlock(&testRSema);
}
Example #10
0
void wait_polling_stop(void)
{
    while (1)
    {
        if (m_stop_polling_ok == 1)
        {
            break;
        } 
        SleepMs(10);
    }
    m_stop_polling_ok = 0;
}
Example #11
0
void CDlgImgShow::Display()
{
	if (!m_in3dViewModel)
	{
		CString strFilePath;
		strFilePath.Format(TEXT("pic%d.bmp"),m_picIndex);
		m_picMask.Load(strFilePath);
		SleepMs(160);

		if (m_picIndex >= LoopCounter())
		{
			Reset();
		}
		return;
	}
	else
	{
		ShowSelectImage();
		SleepMs(160);
	}
}
Example #12
0
//--------------------------------------------------------------------------------------------------
//--------------------------------------------------------------------------------------------------
//--------------------------------------------------------------------------------------------------
//--------------------------------------------------------------------------------------------------
//--------------------------------------------------------------------------------------------------
int main(int argc, char **argv)
{ 
	int Contrast,Backlight;

	Contrast = 9;
	Backlight = 1;
			
	printf("RaspiLCD Demo V0.9 by Martin Steppuhn [" __DATE__ " " __TIME__"]\n");
	printf("RaspberryHwRevision=%i\r\n",GetRaspberryHwRevision());
		
	if(!RaspiLcdHwInit()) { printf("RaspiLcdHwInit() failed!\r\n"); return 1; }
	LCD_Init();			// Init Display
	SetBacklight(1);	// Turn Backlight on
	
	DemoView = 0;
	DemoCpuTemperatureInit();
	DemoBubblesInit();
		
	while(1)
	{
		DemoCount++;
		SleepMs(100);
		UpdateButtons();
		//	printf("Buttons: %02X (%02X) Contrast=%i Backlight=%u\r\n",Button,ButtonPressed,Contrast,Backlight);

		if((DemoCount & 3) == 0) LogCpuTemperature();			
			
		if(BUTTON_PRESSED_UP || BUTTON_PRESSED_DOWN)
		{
			if(BUTTON_PRESSED_UP   && (Contrast < 20))  Contrast++; 
			if(BUTTON_PRESSED_DOWN && (Contrast > 0))   Contrast--; 
			LCD_SetContrast(Contrast); 
		}
		if(BUTTON_PRESSED_CENTER)
		{
			Backlight = (Backlight) ? 0 : 1;	// Toggle Backlight
			SetBacklight(Backlight);			// Write to Hardware
		}		
		if(BUTTON_PRESSED_LEFT  && DemoView) DemoView--;		
		if(BUTTON_PRESSED_RIGHT && (DemoView < 6)) DemoView++;		
	
		if(     DemoView == 0)	 DemoLogo();
		else if(DemoView == 1)	 { if((DemoCount & 3) == 0) DemoCpuTemperature(); }
		else if(DemoView == 2)  DemoBitmap();
		else if(DemoView == 3)  DemoFont();
		else if(DemoView == 4)	 DemoVector();
		else if(DemoView == 5)	 DemoBubbles();
		else if(DemoView == 6)	 DemoText();
					
		LCD_WriteFramebuffer();
	}
	return(0);
}
Example #13
0
void TypingPutError(FILE *stream, char *wrong, char *right)
{
  int	i, len;
  TypingPutString(stream, wrong);
  if (WithProbability(UNFIXED_RATE)) return;
  SleepMs(ERROR_PAUSE+Roll(ERROR_PAUSE*2));
  for (i = 0, len = strlen(wrong); i < len; i++) {
    fputc(BS, stream);
    fputc(SPACE, stream);
    TypingPutChar(stream, BS);
  }
  TypingPutString(stream, right);
}
Example #14
0
// Read one more character, if it comes in 0.1 secs
static int ReadKeyNoWait ()
{
    unsigned char c;
    int countdown = 3;
    while (countdown--)
    {
        if (Console::KeyPressed ())
        {
            if (read (STDIN_FILENO, &c, sizeof (c)) > 0)
                return c;
        }
        SleepMs (33);
    }
    return -1;
}
Example #15
0
// 发送命令
BOOL ArmDev::SendCmd()
{
	T_CMD cmd;
	memcpy(cmd.chCmdPar, &m_cmdDetail, sizeof(CMD_FORMAT));
	cmd.nSendSz = sizeof(CMD_FORMAT);
	if (!m_bDevInterfaceOK)
	{
		TRACE(TEXT("ARM_DEVICE_NOT_EIST \r\n"));
		return FALSE;
	}

	int bytesWrited = 0;
	m_pSerialPort->WriteToPort(cmd.chCmdPar, cmd.nSendSz, bytesWrited);

	bool successed = bytesWrited != 0;
	SleepMs(50);
	return successed;
}
Example #16
0
File: main.c Project: 12019/zibogas
/******************************************************************************
 函数名称:TimeModify
 功能描述:要求输入时间,进行修改
 参数描述:
 参数名称:	输入/输出?	类型		描述
				
 返  回  值:无
				   
 作      者	:许岩
 日      期:2004-09-02
 修改历史:
		日期		修改人		修改描述
		------		---------	-------------
******************************************************************************/
void TimeModify(void)
{
	INT8U i = 0;
	INT8U input[50];
	INT8U buf[50];
	BUS_TIME ltime;


	for ( ;; )
	{
		EA_vCls();
//  	Get_Time(&ltime);
		EA_vDisp(1, 1, "当前生效时间:");
		sprintf((void *)buf, "       %02X:%02X        ", DevStat.effect_time.hour, DevStat.effect_time.minute);
		EA_vDisp(2, 1, (void *)buf);
		EA_vDisp(3, 1, "请输入新的时间:");
		(void)EA_ucClrKeyBuf();
		strcpy((void *)input, "");

		i = EA_ucGetInputStr(4, 8, 20, EM_BIG_FONT | EM_MODE_NUMBER | EM_ALIGN_LEFT | EM_SHOW_ORIGINALLY
		, 2, 2, 0, (void *)input);
		if ( i == EM_ABOLISH )
			return;
		if ( i != EM_SUCCESS )
			continue;
		
		i = EA_ucGetInputStr(4, 11, 20, EM_BIG_FONT | EM_MODE_NUMBER | EM_ALIGN_LEFT | EM_SHOW_ORIGINALLY
		, 2, 2, 0, (void *)input);
		if ( i == EM_ABOLISH )
			return;
		if ( i != EM_SUCCESS )
			continue;
		//  	sprintf(dbuf, "%s", input);
		//  	EA_vDisp(3, 1, dbuf);
		//  	sprintf(dbuf, "result:%02X", i);
		//  	EA_vDisp(4, 1, dbuf);

		ltime.hour = (ascii_to_hex(input[8]) << 4) | ascii_to_hex(input[9]);
		ltime.minute = (ascii_to_hex(input[11]) << 4) | ascii_to_hex(input[12]);

		if ( ltime.hour > 0x23 )       //小时应在0-23之间
			return ;


		
		if ( ltime.minute > 0x59 )                                   //分钟应在0-59之间
			return ;


		if ( (ltime.hour > 0x23) || (ltime.minute > 0x59) )
		{
			EA_vCls();
			EA_vDisp(4, 1, "时间格式错误");
			SleepMs(1500);
			continue;
		}

		DevStat.effect_time.hour = ltime.hour;
		DevStat.effect_time.minute = ltime.minute;
		WriteParam();

		EA_vCls();
		EA_vDisp(4, 1, "生效时间修改成功");
		SleepMs(1500);
		break;
	}
}
Example #17
0
void cXVDRData::Action()
{
  uint32_t lastPing = 0;
  cResponsePacket* vresp;

  SetPriority(19);

  while (Running())
  {
    // try to reconnect
    if(ConnectionLost() && !TryReconnect())
    {
      SleepMs(1000);
      continue;
   }

    // read message
    vresp = cXVDRSession::ReadMessage();

    // check if the connection is still up
    if (vresp == NULL)
    {
      if(time(NULL) - lastPing > 5)
      {
        lastPing = time(NULL);

        if(!SendPing())
          SignalConnectionLost();
      }
      continue;
    }

    // CHANNEL_REQUEST_RESPONSE

    if (vresp->getChannelID() == XVDR_CHANNEL_REQUEST_RESPONSE)
    {

      CMD_LOCK;
      SMessages::iterator it = m_queue.find(vresp->getRequestID());
      if (it != m_queue.end())
      {
        it->second.pkt = vresp;
        it->second.event->Signal();
      }
      else
      {
        delete vresp;
      }
    }

    // CHANNEL_STATUS

    else if (vresp->getChannelID() == XVDR_CHANNEL_STATUS)
    {
      if (vresp->getRequestID() == XVDR_STATUS_MESSAGE)
      {
        uint32_t type = vresp->extract_U32();
        char* msgstr  = vresp->extract_String();
        std::string text = msgstr;

        if (g_bCharsetConv)
          XBMC->UnknownToUTF8(text);

        if (type == 2)
          XBMC->QueueNotification(QUEUE_ERROR, text.c_str());
        if (type == 1)
          XBMC->QueueNotification(QUEUE_WARNING, text.c_str());
        else
          XBMC->QueueNotification(QUEUE_INFO, text.c_str());

        delete[] msgstr;
      }
      else if (vresp->getRequestID() == XVDR_STATUS_RECORDING)
      {
                          vresp->extract_U32(); // device currently unused
        uint32_t on     = vresp->extract_U32();
        char* str1      = vresp->extract_String();
        char* str2      = vresp->extract_String();

        PVR->Recording(str1, str2, on);
        PVR->TriggerTimerUpdate();

        delete[] str1;
        delete[] str2;
      }
      else if (vresp->getRequestID() == XVDR_STATUS_TIMERCHANGE)
      {
        XBMC->Log(LOG_DEBUG, "Server requested timer update");
        PVR->TriggerTimerUpdate();
      }
      else if (vresp->getRequestID() == XVDR_STATUS_CHANNELCHANGE)
      {
        XBMC->Log(LOG_DEBUG, "Server requested channel update");
        PVR->TriggerChannelUpdate();
      }
      else if (vresp->getRequestID() == XVDR_STATUS_RECORDINGSCHANGE)
      {
        XBMC->Log(LOG_DEBUG, "Server requested recordings update");
        PVR->TriggerRecordingUpdate();
      }

      delete vresp;
    }

    // UNKOWN CHANNELID

    else if (!OnResponsePacket(vresp))
    {
      XBMC->Log(LOG_ERROR, "%s - Rxd a response packet on channel %lu !!", __FUNCTION__, vresp->getChannelID());
      delete vresp;
    }
  }
}
Example #18
0
File: main.c Project: 12019/zibogas
// *****************************************************************
// 功能:		man_set_busnum
// 说明:		手动输入车号
// 入口参数:	
// 出口参数:	Null
// 作者:
// 返回值:		Null		
// *****************************************************************
void man_set_busnum(void)
{
	INT8U i = 0;
	INT8U input1[20];
	uchar  uckey;
	uint   uikey;
	uchar  ret;
	uchar  temp_uc[5];
//  if ( strcmp((void *)&DevStat.bus_number[0], "12345") == 0 )
//  {
//  	goto set_bus_number;
//  }

	EA_vCls();
	lcddisp(2, 1, (void *)"输入车号:           ");
	strcpy((void *)input1, "");

	for ( ;; )
	{
		i = EA_ucGetInputStr(2, 10, 20, EM_BIG_FONT | EM_MODE_CHAR | EM_ALIGN_LEFT | EM_SHOW_ORIGINALLY
							 , 5, 5, 0, (void *)input1); //刘及华,修改只能输入数字和字母
		if ( i == EM_SUCCESS )
			break;
		if ( i == EM_ABOLISH )
			return;      //do nothing
	}

	memcpy((void *)&CardInfo.bus_number[0], (void *)input1, 5);

	WriteParam();

	EA_ucSetInverse(EM_lcd_INVON);
	lcddisp(3, 1, (void *)"      输入成功      ");
	EA_ucSetInverse(EM_lcd_INVOFF);
	SleepMs(1500);

RESELECT:
	

	memcpy(temp_uc, &CardInfo.bus_number[0], 5);

	i = BlackName_Find((char *)temp_uc);	//白名单判断
	if ( i != ok )	 						//不是白名单
	{
		lcddisperr("该卡不在白名单中");
		Beeperr();
		return;
	}

	EA_vCls();
	EA_vDisplay(1, "车  号 :鲁C-%s", CardInfo.bus_number);

	lcddisp(4, 1, (void *)"     请刷员工卡     ");

	while(1)
	{
		if( CardInit() == ok )
			break;

		uckey = EA_ucKBHit();
		if ( uckey ==  EM_key_HIT )		 	//按下取消键
		{
			uikey = EA_uiInkey(0);
			if ( uikey == EM_key_CANCEL )   //按下取消键
			{
				return ;
			}
		}
	}

	ret = M1CardProcess();   //再检测员工卡
	if(ret == ok)
	{
		;
	}
	else
	{
		goto RESELECT;
	}

	return;
}
Example #19
0
File: main.c Project: 12019/zibogas
/******************************************************************************
 函数名称:print_work_note_history
 功能描述:打印日结算历史票据
 参数名称:输入/输出?	类型		描述
 输入		
 
 返  回  值:
 
 作      者	:于福勇
 日      期:2004-09-02
 修改历史:
		日期		修改人		修改描述
		------		---------	-------------
******************************************************************************/
void print_work_note_his(INT8U * rec)
{
	uchar       ucRet;
	INT8U		RecBuff[70];
	INT8U		strbuff[50];
	INT8U		time[7+2];


	_BANLANCE_IN_HAND * prec = (_BANLANCE_IN_HAND *)rec;

	EA_vCls();
	
	EA_vDisplay(1, "  历史日结帐单打印  ");//(int qx, int qy, char * ceStr, int xyFlag)
	EA_vDisplay(2, "       请等待...    ");//(int qx, int qy, char * ceStr, int xyFlag)
	SleepMs(1500);

	memset(RecBuff, 0, sizeof(RecBuff));

	ucRet = EA_ucGetPrinterStatus(hDprinterHandle);      //打印前必须判断打印机的状态
	if( ucRet == EM_prn_PAPERENDED )
	{
		EA_vCls();
		EA_vDisplay(1, "   缺纸,打印失败!  ");
		EA_vDisplay(2, "   请放入纸张后    ");
		EA_vDisplay(3, "   按确认任意键    ");
		EA_uiInkey(0);
	}
	if( ucRet == EM_prn_OVERHEAT )
	{
		EA_vDisplay(2, "    机芯温度过高    ");
		EA_vDisplay(3, "    请稍后再打印     ");
		EA_uiInkeyMs(500);
		return;
	}
	if( ucRet == EM_prn_LOWVOL )
	{
		EA_vDisplay(2, "    电池电量过低    ");
		EA_vDisplay(3, "   请充电后再打印   ");
		EA_uiInkeyMs(500);
		return;
	}

	(void)EA_ucPrinterAutoFeeding(hDprinterHandle);
///打印头
	(void)EA_ucLinePrinter(hDprinterHandle, 0, (char *)"淄博市公共汽车公司\r\n");
	(void)EA_ucLinePrinter(hDprinterHandle, 0, (char *)"日结帐单历史记录\r\n");
	(void)EA_ucLinePrinter(hDprinterHandle, 0, (char *)"------------------------------\r\n");
//消费次数
	sprintf((void *)strbuff, "天然气加气次数 :%6d次\r\n", prec->consume_cnt[0]);
	(void)EA_ucLinePrinter(hDprinterHandle, 0, (char *)strbuff);
	sprintf((void *)strbuff, "汽油93#加油次数:%6d次\r\n", prec->consume_cnt[1]);
	(void)EA_ucLinePrinter(hDprinterHandle, 0, (char *)strbuff);
	sprintf((void *)strbuff, "汽油97#加油次数:%6d次\r\n", prec->consume_cnt[2]);
	(void)EA_ucLinePrinter(hDprinterHandle, 0, (char *)strbuff);
	sprintf((void *)strbuff, "柴油加油次数   :%6d次\r\n", prec->consume_cnt[3]);
	(void)EA_ucLinePrinter(hDprinterHandle, 0, (char *)strbuff);
	(void)EA_ucLinePrinter(hDprinterHandle, 0, (char *)"------------------------------\r\n");
//消费体积
	sprintf((void *)strbuff, "天然气体积 :%6.2lf元\r\n", (double)(prec->consume_cap[0])/100);
	(void)EA_ucLinePrinter(hDprinterHandle, 0, (char *)strbuff);
	sprintf((void *)strbuff, "汽油93#体积:%6.2lf元\r\n", (double)(prec->consume_cap[1])/100);
	(void)EA_ucLinePrinter(hDprinterHandle, 0, (char *)strbuff);
	sprintf((void *)strbuff, "汽油97#体积:%6.2lf元\r\n", (double)(prec->consume_cap[2])/100);
	(void)EA_ucLinePrinter(hDprinterHandle, 0, (char *)strbuff);
	sprintf((void *)strbuff, "柴 油 体 积:%6.2lf元\r\n", (double)(prec->consume_cap[3])/100);
	(void)EA_ucLinePrinter(hDprinterHandle, 0, (char *)strbuff);
	(void)EA_ucLinePrinter(hDprinterHandle, 0, (char *)"------------------------------\r\n");
//消费金额
	sprintf((void *)strbuff, "天然气金额 :%6.2lf元\r\n", (double)(prec->consume_amt[0])/100);
	(void)EA_ucLinePrinter(hDprinterHandle, 0, (char *)strbuff);
	sprintf((void *)strbuff, "汽油93#金额:%6.2lf元\r\n", (double)(prec->consume_amt[1])/100);
	(void)EA_ucLinePrinter(hDprinterHandle, 0, (char *)strbuff);
	sprintf((void *)strbuff, "汽油97#金额:%6.2lf元\r\n", (double)(prec->consume_amt[2])/100);
	(void)EA_ucLinePrinter(hDprinterHandle, 0, (char *)strbuff);
	sprintf((void *)strbuff, "柴 油 金 额:%6.2lf元\r\n", (double)(prec->consume_amt[3])/100);
	(void)EA_ucLinePrinter(hDprinterHandle, 0, (char *)strbuff);
	(void)EA_ucLinePrinter(hDprinterHandle, 0, (char *)"------------------------------\r\n");
	sprintf((void *)strbuff, "总  金  额 :%6.2lf元\r\n", (double)(prec->consume_amt[0]+prec->consume_amt[1]+prec->consume_amt[2]
															+prec->consume_amt[3])/100);

	(void)EA_ucLinePrinter(hDprinterHandle, 0, (char *)strbuff);
	(void)EA_ucLinePrinter(hDprinterHandle, 0, (char *)"------------------------------\r\n");

//上班时间	
	memcpy(time, (INT8U*)&prec->work_datetime, 7);
	sprintf((void *)strbuff, "上班时间:\r\n");
	(void)EA_ucLinePrinter(hDprinterHandle, 0, (char*)strbuff);
	sprintf((void *)strbuff, "%02X%02X-%02X-%02X %02X:%02X:%02X\r\n", time[0],time[1],time[2],time[3],time[4],time[5],time[6]);
	(void)EA_ucLinePrinter(hDprinterHandle, 0, (char*)strbuff);	
//下班时间
	memcpy(time, (INT8U*)&prec->down_datetime,7);
	sprintf((void *)strbuff, "下班时间:\r\n");
	(void)EA_ucLinePrinter(hDprinterHandle, 0, (char*)strbuff);
	sprintf((void *)strbuff, "%02X%02X-%02X-%02X %02X:%02X:%02X\r\n", time[0],time[1],time[2],time[3],time[4],time[5],time[6]);
	(void)EA_ucLinePrinter(hDprinterHandle, 0, (char*)strbuff);	

//分行符号
	strcpy((void *)strbuff, "---------------------------------- \r\r\r");
	(void)EA_ucLinePrinter(hDprinterHandle, 0, (char *)strbuff);
	
//设备编号
	htoa(RecBuff, &prec->equ_id[0], 3);
	sprintf((void *)strbuff, "设备编号  :%s\r\n", RecBuff);
	(void)EA_ucLinePrinter(hDprinterHandle, 0, (char *)strbuff);
//商户号
	htoa(RecBuff, &prec->acnt_id[0], 2);
	sprintf((void *)strbuff, "站  点  号:%s\r\n", RecBuff);
	(void)EA_ucLinePrinter(hDprinterHandle, 0, (char *)strbuff);
//操作员号
	htoa(RecBuff, &prec->oper_id[0], 1);
	sprintf((void *)strbuff, "加油员工号:%s\r\n", RecBuff);
	(void)EA_ucLinePrinter(hDprinterHandle, 0, (char *)strbuff);
	// 打印最后调用换页命令
	ucRet = EA_ucLinePrinter(hDprinterHandle, 0, "\f");
	if ( ucRet == EM_SUCCESS )
	{
		EA_vDisplay(2, "本次打印结束!");
		Beep(1000);
		EA_uiInkeyMs(2000);
	}
		
}
Example #20
0
File: main.c Project: 12019/zibogas
/*****************************************************************
 函数原型:Device_Handle_Init()
 功能描述:设备所有句柄初始化
 参数描述:	
				 
 返回值:	OK ? NOTOK
 
 作  者: 刘及华
 日  期:	2012-11-24
 修改历史:
		日期		修改人		修改描述
		------		---------	-------------
*****************************************************************/
INT8U Device_Handle_Init(void)
{
	uchar  ucRet;
	uint   cap_sd;

	if (EA_ucOpenDevice("RFCARD", EM_mifs_TYPEA, &hMifsHandle) != EM_SUCCESS)
	{
		lcddisperr("读卡器初始化失败");
		return notok;
	}
	if ( EA_ucOpenDevice("PRINT", EM_io_REALMODE, &hDprinterHandle) != EM_SUCCESS )
	{
		lcddisperr("获得打印操作句柄失败!");
		return notok;
	}
	if ( EA_ucOpenDevice("USBD", EM_io_REALMODE, &hUSBDHandle) != EM_SUCCESS )
	{
		lcddisperr("获得打印操作句柄失败!");
		return notok;
	}
//  if ( EA_ucOpenDevice("WLM", 0, &hWLMHandle) != EM_SUCCESS )
//  {
//  	lcddisperr("获得GPRS句柄失败!");
//  	return notok;
//  }
///////////////////////////////////////////////打印机设置参数
	ucRet =  EA_ucInitPrinter(hDprinterHandle);
	if ( ucRet != EM_SUCCESS )
	{
		EA_vDisplay(2, "初始化打印机芯失败!");
		return notok;
	}
	ucRet = EA_ucSetPrinterFormat(hDprinterHandle, EM_prn_XSPACE, 0);
	if ( ucRet != EM_SUCCESS )
	{
		lcddisperr("打印字符间距设置失败");
		return notok;
	}
	ucRet =  EA_ucSetPrinterFormat(hDprinterHandle, EM_prn_YSPACE, 8);
	if ( ucRet != EM_SUCCESS )
	{
		lcddisperr("打印行距设置失败");
		return notok;
	}

	//  ucRet = EA_ucSetPrinterFormat(hDprinterHandle, EM_prn_PAGESPACE, 578);
	ucRet = EA_ucSetPrinterFormat(hDprinterHandle, EM_prn_PAGESPACE , 180);
	if ( ucRet != EM_SUCCESS )
	{
		lcddisperr("打印页长度设置失败");
		return notok;
	}

	ucRet = EA_ucSetPrinterFormat(hDprinterHandle, EM_prn_ASCII_DOTTYPE, EM_prn_ASCIIDOT24X12); 
	if ( ucRet != EM_SUCCESS )
	{
		lcddisperr("打印ASCII字符设置失败");
		return notok;
	}
	ucRet = EA_ucSetPrinterFormat(hDprinterHandle, EM_prn_ASCII_PRNTYPE, EM_prn_ASCIIPRN1X1);
	if ( ucRet != EM_SUCCESS )
	{
		lcddisperr("打印ASCII字符大小失败");
		return notok;
	}
	ucRet = EA_ucSetPrinterFormat(hDprinterHandle, EM_prn_HZ_DOTTYPE, EM_prn_HZDOT24X24);
	if ( ucRet != EM_SUCCESS )
	{
		lcddisperr("打印汉字设置失败!");
		return notok;
	}

	ucRet = EA_ucSetPrinterFormat(hDprinterHandle, EM_prn_HZ_PRNTYPE, EM_prn_HZPRN1X1);
	if ( ucRet != EM_SUCCESS )
	{
		lcddisperr("打印汉字大小设置失败");
		return notok;
	}	

	ucRet = EA_ucSetPrinterFormat(hDprinterHandle, EM_prn_PRNGRAY, 4);
	if ( ucRet != EM_SUCCESS )
	{
		lcddisperr("打印灰度设置失败");
		return notok;
	}
/////////////////////////////////////////////////////////////////////////////初始化时候只设置一次
	if (EA_ucOpenDevice("SAM1CARD", 0, &hSam1Handle) != EM_SUCCESS)
	{
		lcddisperr("PSAM卡初始化失败");
		return notok;
	}
//  if (EA_ucOpenDevice("USERCARD", 0, &hCpuHandle) != EM_SUCCESS)
//  {
//  	lcddisperr("CPU卡初始化失败");
//  	return notok;
//  }
//  if (EA_ucICInitModule(hCpuHandle, EM_ic_VOLDEFAULT, EM_ic_TCRMODE) != EM_SUCCESS)
//  {
//      lcddisperr("设置CPU规范失败");
//   	return notok;
//  }
    ucRet = EA_ucOpenDevice("USBD", 0, &hRS232Handle);
	if ( ucRet != EM_SUCCESS )
	{
		(void)EA_ucCloseDevice(&hRS232Handle);
		lcddisperr("COM口初始化失败!");
		return notok;
	}
	ucRet = EA_ucInitRS232(hRS232Handle, EM_232_115200BPS, EM_232_NOPAR, EM_232_8DBS);
	if ( ucRet != EM_SUCCESS )
	{
		(void)EA_ucCloseDevice(&hRS232Handle);
		lcddisperr("COM口设置失败!");
		return notok;
	}
//获取SD卡信息
	ucRet = EA_ucGetDiskInfo(EM_DISK_SDCARD, &ptDiskInfo);
	if ( ucRet != EM_SUCCESS )
	{
		lcddisperr("请插入SD卡!");
		return notok;
	}
	cap_sd = ptDiskInfo.ullSize / 0x100000;
	EA_vDisplay(3, "  SD卡可用容量%dM", cap_sd);
	SleepMs(2000);
	if(cap_sd < 1)
	{
		lcddisperr("请及时清理SD中数据!");
		Beeperr();
	}
//  // 分配空间来存储磁盘的分区列表
//  ptPartList = EA_pvMalloc(ptDiskInfo.uiPartNum * sizeof(ptPartList));
//  if (!ptPartList)
//  {
//  	lcddisperr("分配SD卡缓存区失败!");
//  	return notok;
//  }
//  // 获取磁盘的分区列表
//  ucRet = EA_ucGetPartList(EM_DISK_SDCARD, ptDiskInfo.uiPartNum, &uiRealPartNum, ptPartList);
//  if (ucRet != EM_SUCCESS)
//  {
//  	EA_vFree(ptPartList);
//  	lcddisperr("获取SD卡列表失败!");
//  	return notok;
//  }
//
//  EA_vDisplay(1, "分区数目:%d", ptDiskInfo.uiPartNum);
//  SleepMs(3000);

	ucRet = EA_ucGetPartInfo(EM_DISK_SDCARD, 0, &ptPartInfo);
	if (ucRet != EM_SUCCESS)
	{
		lcddisperr("获取SD卡分区信息失败!");
		return notok;
	}

	return ok;
}
Example #21
0
File: main.c Project: 12019/zibogas
/******************************************************************************
 函数名称:print_work_note_history
 功能描述:打印日结算历史票据
 参数名称:输入/输出?	类型		描述
 输入		
 
 返  回  值:
 
 作      者	:于福勇
 日      期:2004-09-02
 修改历史:
		日期		修改人		修改描述
		------		---------	-------------
******************************************************************************/
void print_work_note_his (INT8U * rec)
{
	uchar       ucRet;
	INT8U		RecBuff[70];
	INT8U		strbuff[50];
	INT8U		time[7+2];


	_BANLANCE_IN_HAND * prec = (_BANLANCE_IN_HAND *)rec;

	EA_vCls();
	
	EA_vDisplay(1, "    日结帐单打印    ");//(int qx, int qy, char * ceStr, int xyFlag)
	EA_vDisplay(2, "       请等待...    ");//(int qx, int qy, char * ceStr, int xyFlag)
	SleepMs(1500);

	memset(RecBuff, 0, sizeof(RecBuff));
///打印头
	(void)EA_ucLinePrinter(hDprinterHandle, 0, (char *)"日结帐单历史记录\r\n");
	(void)EA_ucLinePrinter(hDprinterHandle, 0, (char *)"------------------------------\r\n");
//消费次数
	sprintf((void *)strbuff, "加油次数:%6d次\r\n", prec->consume_cnt);
	(void)EA_ucLinePrinter(hDprinterHandle, 0, (char *)strbuff);

//消费金额
	sprintf((void *)strbuff, "加油体积:%6.2f元\r\n", (float)(prec->consume_amt)/100);
	(void)EA_ucLinePrinter(hDprinterHandle, 0, (char *)strbuff);
	(void)EA_ucLinePrinter(hDprinterHandle, 0, (char *)"------------------------------\r\n");
//上班时间	
	memcpy(time, (INT8U*)&prec->work_datetime, 7);
	htoa(RecBuff, time, 7);
	sprintf((void *)strbuff, "上班时间:%s\r\n", RecBuff);
	(void)EA_ucLinePrinter(hDprinterHandle, 0, (char *)strbuff);
	
//下班时间
	memcpy(time, (INT8U*)&prec->down_datetime,7);
	htoa(RecBuff, time, 7);

	sprintf((void *)strbuff, "下班时间:%s\r\n",RecBuff);
	(void)EA_ucLinePrinter(hDprinterHandle, 0, (char *)strbuff);

//分行符号
	strcpy((void *)strbuff, "---------------------------------- \r\r\r");
	(void)EA_ucLinePrinter(hDprinterHandle, 0, (char *)strbuff);
	
//设备编号
	htoa(RecBuff+4, &prec->equ_id[0], 3);
	sprintf((void *)strbuff, "设备编号:%s\r\n", RecBuff);
	(void)EA_ucLinePrinter(hDprinterHandle, 0, (char *)strbuff);
//商户号
	htoa(RecBuff, &prec->acnt_id[0], 2);
	sprintf((void *)strbuff, "站点号:%s\r\n", RecBuff);
	(void)EA_ucLinePrinter(hDprinterHandle, 0, (char *)strbuff);
//操作员号
	htoa(RecBuff, &prec->oper_id[0], 2);
	sprintf((void *)strbuff, "加油员工号:%s\r\n", RecBuff);
	(void)EA_ucLinePrinter(hDprinterHandle, 0, (char *)strbuff);
	// 打印最后调用换页命令
	ucRet = EA_ucLinePrinter(hDprinterHandle, 0, "\f");
	if ( ucRet == EM_SUCCESS )
	{
		EA_vDisplay(2, "本次打印结束!");
		Beep(1000);
		EA_uiInkeyMs(2000);
	}
		
}
Example #22
0
int initBluetooth(struct sserial_props *pProps, const char *btName, const char *btPin) {
	char pTxBuff[32];
	char pRxBuff[RX_BUFF_LENGTH] = {0};
	int bSame, nLength;

	LOGI("> Triger reset pin");
	resetBluetooth(pProps);

	LOGI("> Switch device to AT-mode");
	ClrDtr(pProps);
	SleepMs(1000);

#if 0
	LOGV("> Reset to default");
	WritePort(pProps, "AT+ORGL" CRLF, strlen("AT+ORGL" CRLF));
	SleepMs(1000);
#endif

	LOGV("> Switch to Slave mode");
	WritePort(pProps, "AT+ROLE=0" CRLF, strlen("AT+ROLE=0" CRLF));
	if (readLine(pProps, pRxBuff, OK_BUFF_LENGTH) <= 0 &&
			strncasecmp(pRxBuff, "ok", 2)) {
		LOGE("AT+ROLE failed to set (%s)", pRxBuff);
		return 0;
	}

	if (getResult(pProps, "AT+NAME?" CRLF, pRxBuff, RX_BUFF_LENGTH)) {
		bSame = strncmp(pRxBuff, btName, strlen(btName)) == 0;

		// Get "OK"
		readLine(pProps, pRxBuff, OK_BUFF_LENGTH);

		if (bSame) {
			LOGW("Bluetooth name is same and will not be changed");
			goto skip_name;
		}
	}

	LOGV("> Set name");
	nLength = sprintf(pTxBuff, "AT+NAME=%s" CRLF, btName);
	WritePort(pProps, pTxBuff, nLength);
	if (readLine(pProps, pRxBuff, OK_BUFF_LENGTH) <= 0 &&
			strncasecmp(pRxBuff, "ok", 2)) {
		LOGE("AT+NAME failed to set (%s)", pRxBuff);
		return 0;
	}

skip_name:
	if (getResult(pProps, "AT+PSWD?" CRLF, pRxBuff, RX_BUFF_LENGTH)) {
		bSame = strncmp(pRxBuff, btPin, strlen(btPin)) == 0;

		// Get "OK"
		readLine(pProps, pRxBuff, OK_BUFF_LENGTH);

		if (bSame) {
			LOGW("Bluetooth pin code is same and will not be changed");
			goto skip_password;
		}
	}

	LOGV("> Set password");
	nLength = sprintf(pTxBuff, "AT+PSWD=%s" CRLF, btPin);
	WritePort(pProps, pTxBuff, nLength);
	if (readLine(pProps, pRxBuff, OK_BUFF_LENGTH) <= 0 &&
			strncasecmp(pRxBuff, "ok", 2)) {
		LOGE("AT+PSWD failed to set (%s)", pRxBuff);
		return 0;
	}

skip_password:
	LOGI("> Switch device to Data-mode");
	SetDtr(pProps);
	SleepMs(10);

	resetBluetooth(pProps);

	return 1;
}
Example #23
0
DemuxPacket* cXVDRDemux::Read()
{
    if(ConnectionLost())
    {
        SleepMs(100);
        return PVR->AllocateDemuxPacket(0);
    }

    cResponsePacket *resp = ReadMessage();

    if(resp == NULL)
        return PVR->AllocateDemuxPacket(0);

    if (resp->getChannelID() != XVDR_CHANNEL_STREAM)
    {
        delete resp;
        return PVR->AllocateDemuxPacket(0);
    }

    DemuxPacket* pkt = NULL;
    int iStreamId = -1;

    switch (resp->getOpCodeID())
    {
    case XVDR_STREAM_CHANGE:
        StreamChange(resp);
        pkt = PVR->AllocateDemuxPacket(0);
        pkt->iStreamId  = DMX_SPECIALID_STREAMCHANGE;
        delete resp;
        return pkt;

    case XVDR_STREAM_STATUS:
        StreamStatus(resp);
        break;

    case XVDR_STREAM_SIGNALINFO:
        StreamSignalInfo(resp);
        break;

    case XVDR_STREAM_CONTENTINFO:
        // send stream updates only if there are changes
        if(!StreamContentInfo(resp))
            break;

        pkt = PVR->AllocateDemuxPacket(sizeof(PVR_STREAM_PROPERTIES));
        memcpy(pkt->pData, &m_Streams, sizeof(PVR_STREAM_PROPERTIES));
        pkt->iStreamId  = DMX_SPECIALID_STREAMINFO;
        pkt->iSize      = sizeof(PVR_STREAM_PROPERTIES);
        delete resp;
        return pkt;

    case XVDR_STREAM_MUXPKT:
        // figure out the stream id for this packet
        for(unsigned int i = 0; i < m_Streams.iStreamCount; i++)
        {
            if(m_Streams.stream[i].iPhysicalId == (unsigned int)resp->getStreamID())
            {
                iStreamId = i;
                break;
            }
        }

        // stream found ?
        if(iStreamId != -1)
        {
            pkt = (DemuxPacket*)resp->getUserData();

            pkt->iSize     = resp->getUserDataLength();
            pkt->duration  = (double)resp->getDuration() * DVD_TIME_BASE / 1000000;
            pkt->dts       = (double)resp->getDTS() * DVD_TIME_BASE / 1000000;
            pkt->pts       = (double)resp->getPTS() * DVD_TIME_BASE / 1000000;
            pkt->iStreamId = iStreamId;

            delete resp;
            return pkt;
        }
        else
        {
            XBMC->Log(LOG_DEBUG, "stream id %i not found", resp->getStreamID());
        }
        break;
    }

    delete resp;
    return PVR->AllocateDemuxPacket(0);
}
Example #24
0
void resetBluetooth(struct sserial_props *pProps) {
	SetRts(pProps);
	SleepMs(100);
	ClrRts(pProps);
	SleepMs(10);
}
Example #25
0
/***	DoRelativePos
**
**	Parameters:
**		none
**
**	Return Value:
**		none
**
**	Errors:
**		none
**
**	Description:
**		Demonstrates servo control using the relative position functions
*/
void DoRelativePos() {
	/* Set some servo relative positions
	*/
	printf("Setting relative servo position\n\n");
	for (ichn = 0; ichn < cServos; ichn++) {
		// DEMC API Call: DemcServoGetMin
		DemcServoGetMin(hif, ichn, &tusMin);

		// DEMC API Call: DemcServoGetMax
		DemcServoGetMax(hif, ichn, &tusMax);

		tusCtr = (tusMin + tusMax) / 2;

		// DEMC API Call: DemcServoSetCenter
		DemcServoSetCenter(hif, ichn, tusCtr);

		for (pos = (short)tusMin-(short)tusCtr; pos <= tusMax-tusCtr; pos += 25) {
			if (pos == ((short)tusMin-(short)tusCtr)) {
				// DEMC API Call: DemcServoSetPosAbs
				DemcServoSetPosAbs(hif, ichn, pos);
			}
			else {
				// DEMC API Call: DemcServoSetPosRel
				DemcServoSetPosRel(hif, ichn, 25);
			}

			// DEMC API Call: DemcServoGetPos
			DemcServoGetPos(hif, ichn, &posTmp);

			// DEMC API Call: DemcServoGetWidth
			DemcServoGetWidth(hif,ichn, &tusTmp);
			printf("  Chan: %d, PosSet=%5d, PosGet=%5d, WdtGet=%5d\n",
						 ichn, pos, posTmp, tusTmp);
			SleepMs(100);
		}
		
		printf("\n");	
	}
	
	for (ichn = 0; ichn < cServos; ichn++) {
		// DEMC API Call: DemcServoGetMin
		DemcServoGetMin(hif, ichn, &tusMin);

		// DEMC API Call: DemcServoGetMax
		DemcServoGetMax(hif, ichn, &tusMax);

		tusCtr = (tusMin + tusMax) / 2;

		// DEMC API Call: DemcServoSetCenter
		DemcServoSetCenter(hif, ichn, tusCtr);

		for (pos = tusMax-tusCtr; pos >= (short)tusMin-(short)tusCtr; pos -= 25) {
			if (pos == (tusMax-tusCtr)) {
				// DEMC API Call: DemcServoSetPosAbs
				DemcServoSetPosAbs(hif, ichn, pos);
			}
			else {
				// DEMC API Call: DemcServoSetPosRel
				DemcServoSetPosRel(hif, ichn, -25);
			}

			// DEMC API Call: DemcServoGetPos
			DemcServoGetPos(hif, ichn, &posTmp);

			// DEMC API Call: DemcServoGetWidth
			DemcServoGetWidth(hif,ichn, &tusTmp);
			printf("  Chan: %d, PosSet=%5d, PosGet=%5d, WdtGet=%5d\n",
						 ichn, pos, posTmp, tusTmp);
			SleepMs(100);
		}
		
		printf("\n");	
	}
}
Example #26
0
/***	DoVelocity
**
**	Parameters:
**		none
**
**	Return Value:
**		none
**
**	Errors:
**		none
**
**	Description:
**		Demonstrates servo control using the velocity control functions
*/
void DoVelocity() {
	int i;

	/* Try using servo velocity.
	*/
	printf(" Using servo velocity\n\n");
	
	ichn = 0;

	// DEMC API Call: DemcServoGetMin
	DemcServoGetMin(hif, ichn, &tusMin);

	// DEMC API Call: DemcServoGetMax
	DemcServoGetMax(hif, ichn, &tusMax);

	// DEMC API Call: DemcServoGetCenter
	DemcServoGetCenter(hif, ichn, &tusCtr);
	
	pos = (short)tusMin - (short)tusCtr;

	for(i=0; i<cServos; i++) {
		// DEMC API Call: DemcServoSetPosAbs
		DemcServoSetPosAbs(hif, ichn+i, pos);
	}

	// DEMC API Call: DemcServoGetPos
	DemcServoGetPos(hif, ichn, &posTmp);
	printf("  Start PosSet=%5d, PosGet=%5d\n", pos, posTmp);
	

	for(i=0; i<cServos; i++) {
		vel = (USHORT) ( i * 256 );

		// DEMC API Call: DemcServoSetVel
		DemcServoSetVel(hif, ichn+i, vel);
	}
	
	// DEMC API Call: DemcServoGetVel
	DemcServoGetVel(hif, ichn+i, &velTmp);
	printf("  VelSet= 0x%4.4X, VelGet= 0x%4.4X\n", vel, velTmp);
	
	pos = (short)tusMax - (short)tusCtr;

	for(i=0; i<cServos; i++) {
		// DEMC API Call: DemcServoSetPosAbs
		DemcServoSetPosAbs(hif, ichn+i, pos);
	}

	// DEMC API Call: DemcServoGetPos
	DemcServoGetPos(hif, ichn, &posTmp);
	printf("  End   PosSet=%5d, PosGet=%5d\n", pos, posTmp);

	while(fTrue) {
		// DEMC API Call: DemcServoGetMotion
		DemcServoGetMotion(hif, &dwMov);
		if (dwMov == 0) {
			break;
		}
	}

	for(i=0; i < cServos; i++) {
		// DEMC API Call: DemcServoSetVel
		DemcServoSetVel(hif, ichn+i, 0);
	}

	for(i=0; i < cServos; i++) {
		// DEMC API Call: DemcServoSetPosAbs
		DemcServoSetPosAbs(hif, ichn+i, 0);
	}

	SleepMs(500);
		
	pos = (short)tusMax - (short)tusCtr;

	for(i=0; i < cServos; i++) {
		// DEMC API Call: DemcServoSetPosAbs
		DemcServoSetPosAbs(hif, ichn+i, pos);
	}

	// DEMC API Call: DemcServoGetPos
	DemcServoGetPos(hif, ichn, &posTmp);
	printf("  Start PosSet=%5d, PosGet=%5d\n", pos, posTmp);
	SleepMs(500);

	for(i=0; i < cServos; i++) {
		vel = (USHORT) ( (cServos + 1 - i) * 256 );
		// DEMC API Call: DemcServoSetVel
		DemcServoSetVel(hif, ichn+i, vel);
	}

	// DEMC API Call: DemcServoGetVel
	DemcServoGetVel(hif, ichn+3, &velTmp);
	printf("  VelSet= 0x%4.4X, VelGet= 0x%4.4X\n", vel, velTmp);
	
	pos = (short)tusMin - (short)tusCtr;

	for(i=0; i < cServos; i++) {
		// DEMC API Call: DemcServoSetPosAbs
		DemcServoSetPosAbs(hif, ichn+i, pos);
	}

	// DEMC API Call: DemcServoGetPos
	DemcServoGetPos(hif, ichn, &posTmp);
	printf("  End   PosSet=%5d, PosGet=%5d\n", pos, posTmp);
	
	while(fTrue) {
		// DEMC API Call: DemcServoGetMotion
		DemcServoGetMotion(hif, &dwMov);
		if (dwMov == 0) {
			break;
		}
	}
	
	for(i=0; i < cServos; i++) {
		// DEMC API Call: DemcServoSetVel
		DemcServoSetVel(hif, ichn+i, 0);
	}	
}
Example #27
0
static void
CSemaUpTest(void *dummy) {
	Con_Printf_P("I'm the wakeup timer\n");
	SleepMs(100);
	CSema_Up(&testCSema);
}