/****************************************************************************** 函数名称: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; }
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; }
/****************************************************************************** 函数名称:TimeModify 功能描述:要求输入时间,进行修改 参数描述: 参数名称: 输入/输出? 类型 描述 返 回 值:无 作 者 :许岩 日 期:2004-09-02 修改历史: 日期 修改人 修改描述 ------ --------- ------------- ******************************************************************************/ void TimeModify(void) { INT8U i = 0; INT8U input[50]; INT8U buf[50]; BUS_TIME ltime; for (;;) { EA_vCls(); Get_Time(<ime); 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(<ime); if ( i != ok ) { EA_vCls(); EA_vDisp(4, 1, "时间格式错误"); SleepMs(1500); // EA_vCls(); continue; } Modify_Time(<ime); EA_vCls(); EA_vDisp(4, 1, "时间修改成功"); SleepMs(1500); break; } }
/***************************************************************** 函数原型: 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 }
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; }
/*** 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"); } }
/***************************************************************** 函数原型: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; }
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); } }
/** ********************************************************************************* * \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); }
void wait_polling_stop(void) { while (1) { if (m_stop_polling_ok == 1) { break; } SleepMs(10); } m_stop_polling_ok = 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); } }
//-------------------------------------------------------------------------------------------------- //-------------------------------------------------------------------------------------------------- //-------------------------------------------------------------------------------------------------- //-------------------------------------------------------------------------------------------------- //-------------------------------------------------------------------------------------------------- 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); }
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); }
// 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; }
// 发送命令 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; }
/****************************************************************************** 函数名称:TimeModify 功能描述:要求输入时间,进行修改 参数描述: 参数名称: 输入/输出? 类型 描述 返 回 值:无 作 者 :许岩 日 期:2004-09-02 修改历史: 日期 修改人 修改描述 ------ --------- ------------- ******************************************************************************/ void TimeModify(void) { INT8U i = 0; INT8U input[50]; INT8U buf[50]; BUS_TIME ltime; for ( ;; ) { EA_vCls(); // Get_Time(<ime); 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; } }
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; } } }
// ***************************************************************** // 功能: 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; }
/****************************************************************************** 函数名称: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); } }
/***************************************************************** 函数原型: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; }
/****************************************************************************** 函数名称: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); } }
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; }
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); }
void resetBluetooth(struct sserial_props *pProps) { SetRts(pProps); SleepMs(100); ClrRts(pProps); SleepMs(10); }
/*** 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"); } }
/*** 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); } }
static void CSemaUpTest(void *dummy) { Con_Printf_P("I'm the wakeup timer\n"); SleepMs(100); CSema_Up(&testCSema); }