// ***************************************************************** // 功能: AnalyAndDisplayNote // 说明: 查询日结表,并显示日结信息 // 入口参数: // 出口参数: Null // 作者: // 返回值: // ***************************************************************** void AnalyAndDisplayNote(INT8U * strTradeInfo) { INT8U time[7+2]; char strbuff[30]; INT8U temp[30]; _BANLANCE_IN_HAND * prec = (_BANLANCE_IN_HAND *)strTradeInfo; EA_vCls(); sprintf(strbuff, "加油次数:%7d次", (prec->consume_cnt[0]+prec->consume_cnt[1]+prec->consume_cnt[2]+prec->consume_cnt[3])); EA_vDisplay(1, strbuff); //消费金额 sprintf(strbuff, "加油金额:%6.2lf元", (double)(prec->consume_amt[0]+prec->consume_amt[1]+prec->consume_amt[2]+prec->consume_amt[3])/100.0); EA_vDisplay(2, strbuff); //上班时间 memcpy(time, (INT8U*)&prec->work_datetime, 6); htoa(temp, time, 6); sprintf(strbuff, "上班时间:%s", temp); EA_vDisplay(4, strbuff); //操作员 memcpy(strbuff, (INT8U*)&prec->oper_id, 3); htoa((void *)temp, (void *)strbuff, 3); sprintf(strbuff, "加 油 员:%s",temp); EA_vDisplay(3, strbuff); }
// ***************************************************************** // 功能: AnalyAndDisplayNote // 说明: 查询日结表,并显示日结信息 // 入口参数: // 出口参数: Null // 作者: // 返回值: // ***************************************************************** void AnalyAndDisplayNote(INT8U * strTradeInfo) { INT8U time[7+2]; char strbuff[30]; INT8U temp[30]; // float fBuf = 0; // INT8U LOCAL_V_TYPE temp_buf[100]; _BANLANCE_IN_HAND * prec = (_BANLANCE_IN_HAND *)strTradeInfo; EA_vCls(); sprintf(strbuff, "加油次数:%7d次", prec->consume_cnt); EA_vDisplay(1, strbuff); //消费金额 sprintf(strbuff, "加油体积:%6.2f元", (float)(prec->consume_amt)/100); EA_vDisplay(2, strbuff); //上班时间 memcpy(time, (INT8U*)&prec->work_datetime,7); htoa(temp, time, 7); sprintf(strbuff, "上班:%s", temp); EA_vDisplay(3, strbuff); //下班时间 memcpy(time, (INT8U*)&prec->down_datetime,7); htoa(temp, time, 7); sprintf(strbuff, "下班:%s",temp); EA_vDisplay(4, strbuff); }
static VOID HandleSetHandlePrintHex(HWND handle,DWORD Msg,WPARAM wParam,LPARAM lParam) { LPVOID pMem; HANDLE hNewBuffer; int ret; LocalFree((HLOCAL)SendMessage(handle, EM_GETHANDLE, 0, 0L)); if (UnicodeUsed) { hNewBuffer = LocalAlloc(LMEM_MOVEABLE | LMEM_ZEROINIT, 100); pMem = LocalLock(hNewBuffer); strcpyw_((wchar_t*)pMem,NewTextW); } else { hNewBuffer = LocalAlloc(LMEM_MOVEABLE | LMEM_ZEROINIT,50); pMem = LocalLock(hNewBuffer); strcpy_((char*)pMem,NewText); } LocalUnlock(pMem); hNewBuffer = LocalHandle(pMem); /* Updates the buffer and displays new buffer */ ret = SendMessage(handle, EM_SETHANDLE, (WPARAM)hNewBuffer, 0L); htoa(ret,&TextBuffer[8]); PrintTextXY(TextBuffer,ResultX,ResultY,16); }
void unit_test_task(void *pvParameters) { char msg1[] = "Start\n\r"; char msg2[512] = "Start testing...\n\r"; puts(msg1); puts(msg2); if (strcmp(msg1, msg2)) { puts("msg1 and msg2 are diff\n\r"); } else { puts("strcpy result is not match\n\r"); } if (strncmp(msg1, msg2, 5) == 0) { puts("msg1 and msg2 first 5 chars are the same\n\r"); } else { puts("strncpy result is not match\n\r"); } printf("test htoi(255):%s\n\r", htoa(255)); printf("test atoi(100):%s\n\r", itoa(100)); printf("\n"); strcat(msg2, msg1); printf("strcat:%s\n\r", msg2); sprintf(msg2, "==>test sprintf %s:%s:%d\n", msg1, "zzz", 122); printf("sprintf:%s\n\r", msg2); vTaskList(msg2); printf("vTaskList:%s\n\r", msg2); }
static VOID HandlePrintRect(HWND handle,DWORD Msg,WPARAM wParam,LPARAM lParam) { TextBuffer[8] = (char)(BUFFERLEN - 8); /* Setting the max size to put chars in first byte */ SendMessage(handle,Msg,wParam,lParam); htoa(rect.top,&TextBuffer[8]); TextBuffer[8+8] = ' '; htoa(rect.bottom,&TextBuffer[8+8+1]); TextBuffer[8+8+8+1] = ' '; htoa(rect.left,&TextBuffer[8+8+8+1+1]); TextBuffer[8+8+8+8+1+1] = ' '; htoa(rect.right,&TextBuffer[8+8+8+8+1+1+1]); PrintTextXY(TextBuffer,ResultX,ResultY,8+4*9-1); }
static VOID HandlePrintReturnHex(HWND handle,DWORD Msg,WPARAM wParam,LPARAM lParam) { int ret; ret = SendMessage(handle,Msg,wParam,lParam); htoa(ret,&TextBuffer[8]); PrintTextXY(TextBuffer,ResultX,ResultY,16); }
static VOID HandlePrintReturnHex(HWND handle,DWORD Msg,WPARAM wParam,LPARAM lParam) { LRESULT ret; RECT rect; ret = SendMessage(handle,Msg,wParam,lParam); htoa((unsigned int)ret,&TextBuffer[8]); GetWindowRect(g_hwnd,&rect); PrintTextXY(TextBuffer,ResultX,ResultY,16,rect); }
/* supported formats: %%, %d, %u, %x, %p, %s, %c * TODO: * - return number of bytes copied into 'str' */ int kvsprintf(char *str, const char *fmt, va_list ap) { char *ptr, *stmp; unsigned utmp; int itmp; char ctmp; for (; *fmt; fmt = ptr + 2) { ptr = kstrchr(fmt, '%'); if (ptr == NULL) { kstrcpy(str, fmt); return 1; } str += kstrncpy(str, fmt, (int)ptr - (int)fmt); switch (*(ptr + 1)) { case 'd': /* signed int */ itmp = va_arg(ap, int); str = sitoa(str, itmp); break; case 'u': /* unsigned int */ utmp = va_arg(ap, unsigned); str = uitoa(str, utmp); break; case 'p': /* pointer */ *str++ = '0'; *str++ = 'x'; case 'x': /* hex */ utmp = va_arg(ap, unsigned); str = htoa(str, utmp); break; case 's': /* string */ stmp = va_arg(ap, char *); str += kstrcpy(str, stmp); break; case '%': *str++ = '%'; break; case 'c': ctmp = va_arg(ap, int); *str++ = ctmp; break; default: /* unsupported format */ break; } } return 1; }
int INT::Run(string arg1, string arg2) { if (arg1=="21") { int p=reg.Read("ah"); string s; switch (p) { case 1: cin>>s; reg.Modify("dl",s); break; case 2: cout<<char(reg.Read("dl")); break; case 3: cout<<htoa(reg.Read("dl")); break; } }
void rtc_display(void) { puts("\r\n"); htoa(RTC.BCDYEAR); putc('-'); htoa(RTC.BCDMON); putc('-'); htoa(RTC.BCDDATE); putc(' '); htoa(RTC.BCDDAY); putc(' '); htoa(RTC.BCDHOUR); putc(':'); htoa(RTC.BCDMIN); putc(':'); htoa(RTC.BCDSEC); }
void unit_test_task(void *pvParameters) { char msg1[] = "Start Unit Testing\n\r"; char msg2[128] = "Start String testing\n\r"; /* test file system */ fio_write(1, msg1, strlen(msg1)); /* test puts() */ puts(msg2); /* test strcmp */ if ( strcmp(msg1,msg2)) { puts("[Ok] msg1 ~= msg2\n\r"); } else { puts("strcpy result is not match\n\r"); } /* test printf */ printf("test htoi(255):%s\n\r", htoa(255)); printf("test atoi(100):%s\n\r", itoa(100)); printf("\n"); }
/* for %x %X hexadecimal representation */ static void hexa(struct DATA *p, double d) { CWT_CHAR *tmp; tmp = htoa(d); p->width -= (int)cwt_str_ns()->strLen(tmp); PAD_RIGHT(p); if (p->square == FOUND) { /* prefix '0x' for hexa */ PUT_CHAR(_T('0'), p); PUT_CHAR(*p->pf, p); } while (*tmp) { /* hexa */ PUT_CHAR((*p->pf == _T('X') ? cwt_str_ns()->toUpper(*tmp) : *tmp), p); tmp++; } PAD_LEFT(p); }
/****************************************************************************** 函数名称: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); } }
void check_drive_uart(void) { static uint8_t inputbuf[RX_LINE_SIZE], inputptr = 0; uint8_t i, recv; while(uart_available(DRIVE)) { recv = uart_get(DRIVE); if(recv == '\r') { if(inputptr) { if(inputbuf[0] == '@') { // reverse command from DRIVE MCU switch(inputbuf[1]) { case '1': // drive complete if(inputptr != 3 || inputbuf[2] != '0') { break; } drive_complete = 1; break; case '4': // track info update switch(inputbuf[2]) { case '4': // absolute position if(inputptr != 11) { break; } abspL = htoa(inputbuf[ 3], inputbuf[ 4]) << 8 | htoa(inputbuf[ 5], inputbuf[ 6]); abspR = htoa(inputbuf[ 7], inputbuf[ 8]) << 8 | htoa(inputbuf[ 9], inputbuf[10]); break; case '5': // relative position if(inputptr != 15) { break; } sectL = htoa(inputbuf[ 3], inputbuf[ 4]); relpL = htoa(inputbuf[ 5], inputbuf[ 6]) << 8 | htoa(inputbuf[ 7], inputbuf[ 8]); sectL = htoa(inputbuf[ 9], inputbuf[10]); relpL = htoa(inputbuf[11], inputbuf[12]) << 8 | htoa(inputbuf[13], inputbuf[14]); break; case '6': // track sensors if(inputptr != 7) { break; } trksL = htoa(inputbuf[3], inputbuf[4]); trksR = htoa(inputbuf[5], inputbuf[6]); break; } break; } } else if(rev_passthru) { for(i = 0; i < inputptr; i++) { uart_put(DEBUG, inputbuf[i]); } fprintf(&debug, "\r\n"); } inputptr = 0; } } else if(recv == '\n') { ; } else { if(inputptr != RX_LINE_SIZE) { inputbuf[inputptr] = recv; inputptr++; } } } }
int vsprintf(char *buf,const char *fmt,va_list args) { int value = 0; char *p = buf; char tmp[32] = {0}; va_list next_arg = args; for(;*fmt;fmt++) { if(*fmt != '%') { *p++ = *fmt; continue; } fmt++; switch(*fmt) { case 's': strcpy(p,(*((char **)next_arg))); p += strlen(*((char **)next_arg)); next_arg += 4; break; case 'c': *p++ = *((char *)next_arg); next_arg += 4; break; case 'd': value = *((int *)next_arg); if(value < 0) { *p++ = '-'; itoa(tmp,-value); } else { itoa(tmp,value); } strcpy(p,tmp); p+= strlen(tmp); next_arg += 4; break; case 'p': case 'x': value = *((int *)next_arg); htoa(tmp,value); strcpy(p,tmp); p+= strlen(tmp); next_arg += 4; break; /* print address value */ default: break; } } return (p - buf); }
void check_debug_uart(void) { static uint8_t inputbuf[RX_LINE_SIZE], inputptr = 0; uint8_t i, recv; int16_t ticks; while(uart_available(DEBUG)) { recv = uart_get(DEBUG); if(recv == '\r') { fprintf(&debug, "\r\n"); if(inputptr) { switch(inputbuf[0]) { case '?': // print drive command list fprintf_P(&debug, PSTR("stop() ........................ | p00\r\n")); fprintf_P(&debug, PSTR("fwd_both(speed) ............... | p0300, p0400, p15 u8\r\n")); fprintf_P(&debug, PSTR("rev_both(speed) ............... | p0301, p0401, p15 u8\r\n")); fprintf_P(&debug, PSTR("forward(Lspeed, Rspeed) ....... | p0300, p0400, p11 u8, p12 u8\r\n")); fprintf_P(&debug, PSTR("reverse(Lspeed, Rspeed) ....... | p0301, p0401, p11 u8, p12 u8\r\n")); fprintf_P(&debug, PSTR("turnCCW(Lspeed, Rspeed) ....... | p0301, p0400, p11 u8, p12 u8\r\n")); fprintf_P(&debug, PSTR("turnCW (Lspeed, Rspeed) ....... | p0300, p0401, p11 u8, p12 u8\r\n")); fprintf_P(&debug, PSTR("set_abs_pos(pos) .............. | p1a s16\r\n")); fprintf_P(&debug, PSTR("set_rel_pos(sect, pos) ........ | p1b u8 u8\r\n")); fprintf_P(&debug, PSTR("pos_corr_on() ................. | p1f01\r\n")); fprintf_P(&debug, PSTR("pos_corr_off() ................ | p1f00\r\n")); fprintf_P(&debug, PSTR("nav_abs_pos(speed, pos) ....... | p31 u8 s16\r\n")); fprintf_P(&debug, PSTR("nav_rel_pos(speed, sect, pos) . | p32 u8 u8 u8\r\n")); break; case 'p': // passthrough to DRIVE MCU for(i = 1; i < inputptr; i++) { uart_put(DRIVE, inputbuf[i]); } uart_put(DRIVE, '\r'); break; case 'r': // toggle reverse passthrough from DRIVE MCU rev_passthru ^= 1; break; case 'd': // local dump on/off local_dump ^= 1; break; case 's': // start/stop main thread run_main ^= 1; if(run_main) { fprintf_P(&debug, PSTR("Main thread started!\r\n")); } else { fprintf_P(&debug, PSTR("Main thread stopped!\r\n")); stop(); } break; case 't': // start/stop test thread if(inputptr != 2) { cmd_err(); break; } run_test = htoa(0, inputbuf[1]); if(!run_test) { fprintf_P(&debug, PSTR("All test sequences stopped!\r\n")); stop(); } else { fprintf_P(&debug, PSTR("Started test sequence %u!\r\n"), run_test); } break; case ' ': // stop all motors run_main = 0; run_test = 0; pid_on = 0; stop(); set_speed_3(0); set_speed_4(0); break; case 'u': fprintf_P(&debug, PSTR("%lu\r\n"), uptime()); break; case 'b': #define VBAT_FACTOR 0.0044336 fprintf_P(&debug, PSTR("4 x %1.2fV\r\n"), (float)read_adc(VSENS) * VBAT_FACTOR); break; case 'm': // servo power if(inputptr != 2 || (inputbuf[1] & ~1) != '0') { cmd_err(); break; } inputbuf[1] == '0' ? clr_bit(SPWR) : set_bit(SPWR); break; case '9': // magnets if(inputptr != 2 || (inputbuf[1] & ~1) != '0') { cmd_err(); break; } if(inputbuf[1] == '0') { clr_bit(FET1); clr_bit(FET2); fprintf_P(&debug, PSTR("Magnets off!\r\n")); } else { set_bit(FET1); set_bit(FET2); fprintf_P(&debug, PSTR("Magnets on!\r\n")); } break; case '1': // PID on/off if(inputptr != 2 || (inputbuf[1] & ~1) != '0') { cmd_err(); break; } if(inputbuf[1] == '0') { pid_on = 0; fprintf_P(&debug, PSTR("PID off!\r\n")); } else { pid_on = 1; fprintf_P(&debug, PSTR("PID on!\r\n")); reset_pid(); } break; case '3': // turn motor commands if(!isHex(inputbuf[2]) || !isHex(inputbuf[3])) { cmd_err(); break; } switch(inputbuf[1]) { case '0': // forward (uint8_t speed) if(inputptr != 4) { cmd_err(); break; } motor3_fwd(); set_speed_3(htoa(inputbuf[2], inputbuf[3]) * 40); break; case '1': // reverse (uint8_t speed) if(inputptr != 4) { cmd_err(); break; } motor3_rev(); set_speed_3(htoa(inputbuf[2], inputbuf[3]) * 40); break; case '2': // set reference target (int16_t ticks) if(inputptr != 6 || !isHex(inputbuf[4]) || !isHex(inputbuf[5])) { cmd_err(); break; } pid_target[MOTOR3] = htoa(inputbuf[2], inputbuf[3]) << 8 | htoa(inputbuf[4], inputbuf[5]); break; case '3': // set reference speed (int16_t ticks) if(inputptr != 6 || !isHex(inputbuf[4]) || !isHex(inputbuf[5])) { cmd_err(); break; } pid_speed[MOTOR3] = htoa(inputbuf[2], inputbuf[3]) << 8 | htoa(inputbuf[4], inputbuf[5]); break; case '4': // set P (int16_t factor) if(inputptr != 6 || !isHex(inputbuf[4]) || !isHex(inputbuf[5])) { cmd_err(); break; } //ENC3_P = htoa(inputbuf[2], inputbuf[3]) << 8 | htoa(inputbuf[4], inputbuf[5]); break; case '5': // set I (int16_t factor) if(inputptr != 6 || !isHex(inputbuf[4]) || !isHex(inputbuf[5])) { cmd_err(); break; } //ENC3_I = htoa(inputbuf[2], inputbuf[3]) << 8 | htoa(inputbuf[4], inputbuf[5]); break; case '6': // set D (int16_t factor) if(inputptr != 6 || !isHex(inputbuf[4]) || !isHex(inputbuf[5])) { cmd_err(); break; } //ENC3_D = htoa(inputbuf[2], inputbuf[3]) << 8 | htoa(inputbuf[4], inputbuf[5]); break; case '7': // set noise gate (int16_t level) if(inputptr != 6 || !isHex(inputbuf[4]) || !isHex(inputbuf[5])) { cmd_err(); break; } //ENC3_NOISE_GATE = htoa(inputbuf[2], inputbuf[3]) << 8 | htoa(inputbuf[4], inputbuf[5]); break; case 'f': // set reference angle if(inputptr != 6 || !isHex(inputbuf[4]) || !isHex(inputbuf[5])) { cmd_err(); break; } ticks = deg2ticks(htoa(inputbuf[2], inputbuf[3]) << 8 | htoa(inputbuf[4], inputbuf[5])); cli(); V_encoder = ticks; sei(); reset_pid(); break; default: cmd_err(); } break; case '4': // lift motor commands if(!isHex(inputbuf[2]) || !isHex(inputbuf[3])) { cmd_err(); break; } switch(inputbuf[1]) { case '0': // up (uint8_t speed) if(inputptr != 4) { cmd_err(); break; } motor4_fwd(); set_speed_4(htoa(inputbuf[2], inputbuf[3]) * 40); break; case '1': // down (uint8_t speed) if(inputptr != 4) { cmd_err(); break; } motor4_rev(); set_speed_4(htoa(inputbuf[2], inputbuf[3]) * 40); break; case '2': // set reference target (int16_t ticks) if(inputptr != 6 || !isHex(inputbuf[4]) || !isHex(inputbuf[5])) { cmd_err(); break; } pid_target[MOTOR4] = htoa(inputbuf[2], inputbuf[3]) << 8 | htoa(inputbuf[4], inputbuf[5]); break; case '3': // set reference speed (int16_t ticks) if(inputptr != 6 || !isHex(inputbuf[4]) || !isHex(inputbuf[5])) { cmd_err(); break; } pid_speed[MOTOR4] = htoa(inputbuf[2], inputbuf[3]) << 8 | htoa(inputbuf[4], inputbuf[5]); break; case '4': // set P (int16_t factor) if(inputptr != 6 || !isHex(inputbuf[4]) || !isHex(inputbuf[5])) { cmd_err(); break; } //ACTU_P = htoa(inputbuf[2], inputbuf[3]) << 8 | htoa(inputbuf[4], inputbuf[5]); break; case '5': // set I (int16_t factor) if(inputptr != 6 || !isHex(inputbuf[4]) || !isHex(inputbuf[5])) { cmd_err(); break; } //ACTU_I = htoa(inputbuf[2], inputbuf[3]) << 8 | htoa(inputbuf[4], inputbuf[5]); break; case '6': // set D (int16_t factor) if(inputptr != 6 || !isHex(inputbuf[4]) || !isHex(inputbuf[5])) { cmd_err(); break; } //ACTU_D = htoa(inputbuf[2], inputbuf[3]) << 8 | htoa(inputbuf[4], inputbuf[5]); break; case '7': // set noise gate (int16_t level) if(inputptr != 6 || !isHex(inputbuf[4]) || !isHex(inputbuf[5])) { cmd_err(); break; } //ACTU_NOISE_GATE = htoa(inputbuf[2], inputbuf[3]) << 8 | htoa(inputbuf[4], inputbuf[5]); break; default: cmd_err(); } break; case '5': // servo5 commands if(inputptr != 4 || !isHex(inputbuf[2]) || !isHex(inputbuf[3])) { cmd_err(); break; } servo5(htoa(inputbuf[2], inputbuf[3])); //OCR0A = htoa(inputbuf[1], inputbuf[2]); break; case '6': // servo6 commands if(inputptr != 4 || !isHex(inputbuf[2]) || !isHex(inputbuf[3])) { cmd_err(); break; } servo6(htoa(inputbuf[2], inputbuf[3])); //OCR0B = htoa(inputbuf[1], inputbuf[2]); break; case '7': // servo7 commands if(inputptr != 4 || !isHex(inputbuf[2]) || !isHex(inputbuf[3])) { cmd_err(); break; } servo7(htoa(inputbuf[2], inputbuf[3])); //OCR2A = htoa(inputbuf[1], inputbuf[2]); break; case '8': // servo8 commands if(inputptr != 4 || !isHex(inputbuf[2]) || !isHex(inputbuf[3])) { cmd_err(); break; } servo8(htoa(inputbuf[2], inputbuf[3])); //OCR2B = htoa(inputbuf[1], inputbuf[2]); break; case 'x': if(!isHex(inputbuf[2]) || !isHex(inputbuf[3])) { cmd_err(); break; } switch(inputbuf[1]) { case '1': // set reference angle if(inputptr != 6 || !isHex(inputbuf[4]) || !isHex(inputbuf[5])) { cmd_err(); break; } param1 = htoa(inputbuf[2], inputbuf[3]) << 8 | htoa(inputbuf[4], inputbuf[5]); break; case '2': // set reference angle if(inputptr != 6 || !isHex(inputbuf[4]) || !isHex(inputbuf[5])) { cmd_err(); break; } param2 = htoa(inputbuf[2], inputbuf[3]) << 8 | htoa(inputbuf[4], inputbuf[5]); break; case '3': // set reference angle if(inputptr != 6 || !isHex(inputbuf[4]) || !isHex(inputbuf[5])) { cmd_err(); break; } param3 = htoa(inputbuf[2], inputbuf[3]) << 8 | htoa(inputbuf[4], inputbuf[5]); break; case '4': // set reference angle if(inputptr != 6 || !isHex(inputbuf[4]) || !isHex(inputbuf[5])) { cmd_err(); break; } param4 = htoa(inputbuf[2], inputbuf[3]) << 8 | htoa(inputbuf[4], inputbuf[5]); break; case '5': // set reference angle if(inputptr != 6 || !isHex(inputbuf[4]) || !isHex(inputbuf[5])) { cmd_err(); break; } param5 = htoa(inputbuf[2], inputbuf[3]) << 8 | htoa(inputbuf[4], inputbuf[5]); break; } break; default: cmd_err(); } inputptr = 0; } } else if(recv == 0x7f) { if(!inputptr) { uart_put(DEBUG, '\a'); } else { fprintf(&debug, "\b\e[K"); inputptr--; } } else { if(inputptr == RX_LINE_SIZE) { uart_put(DEBUG, '\a'); } else { uart_put(DEBUG, recv); inputbuf[inputptr] = recv; inputptr++; } } }
void get_free_mem_addr(char* addr) { htoa(free_ptr, addr); }
/****************************************************************************** 函数名称: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); } }