//以字符的格式输出 void Print(uint8_t num) { uint8_t bai,shi,ge; bai=num/100; shi=num%100/10; ge=num%10; UsartSend('0'+bai); UsartSend('0'+shi); UsartSend('0'+ge); }
//以字符的形式输出INT型数据 void PrintInt(uint16_t num) { uint8_t w5,w4,w3,w2,w1; w5=num/10000; w4=num%10000/1000; w3=num%1000/100; w2=num%100/10; w1=num%10; UsartSend('0'+w5); UsartSend('0'+w4); UsartSend('0'+w3); UsartSend('0'+w2); UsartSend('0'+w1); }
uint16_t UsartPrintByte(uint8_t data, uint8_t hex, uint8_t block) { uint8_t count = 0; char buffer[4]; count = hex ? uitohex(buffer, data, hex) : uitodec(buffer, data); return UsartSend(buffer, count, block); }
uint16_t UsartSendStr(const char *buffer, uint8_t block) { uint16_t count = 0; const char *tmp = buffer; while(*tmp++) ++count; return UsartSend(buffer, count, block); }
//输出字符串 void PrintChar(char *s) { char *p; p=s; while(*p != '\0') { UsartSend(*p); p++; } }
uint16_t UsartPrintInt(int32_t data, uint8_t hex, uint8_t block) { uint8_t count = 0; char buffer[12], *tmp = buffer; if(data < 0) { *tmp++ = '-'; data = -data; ++count; } count += hex ? uitohex(tmp, data, hex) : uitodec(tmp, data); return UsartSend(buffer, count, block); }
void ProcessInput(LIVECONFIG *config, char const *buffer) { int InVal; char const *next = FindWordEnd(buffer); uint8_t CmdID = FindCommand(g_commands, buffer, next - buffer); uint8_t ShiftID; buffer = SkipWhitespaces(next); next = FindWordEnd(buffer); switch(CmdID) { case 0: //show ShowParams(config); break; case 1: //save #if defined(USE_EEPROM) I2cEEPROM_Write(&g_eeprom, EESTART, config, sizeof(*config)); #endif break; case 2: //debug mask if((InVal = GetIntParam(buffer, next - buffer, 1, 0)) >= 0) g_config.debug = InVal; else g_config.debug = g_config.debug ? 0 : -1; break; case 3: //mccnt if((InVal = GetIntParam(buffer, next - buffer, 1, 0)) >= 0) config->mccount = InVal; break; case 4: //thdiv if((InVal = GetIntParam(buffer, next - buffer, 1, 0)) >= 0) config->thdiv = InVal; break; case 5: //tlim if((InVal = GetIntParam(buffer, next - buffer, 1, 0)) >= 0) config->tlimit = InVal; break; case 6: //shift ShiftID = FindCommand(g_shifts, buffer, next - buffer); buffer = SkipWhitespaces(next); next = FindWordEnd(buffer); InVal = GetIntParam(buffer, next - buffer, 1, 0); if(InVal != INT_MIN) { if(ShiftID < 4) config->shifts[g_shiftDisps[ShiftID]] = InVal; else if(ShiftID == 4) config->sumshift = InVal; } break; case 7: // reset g_config = g_config_default; break; case 8: //led channel val0 val1 val2 val3 val4 val5 val6 val7 #if defined(USE_LEDBAR) { uint8_t channel; int i; InVal = GetIntParam(buffer, next - buffer, 1, 0); if(InVal != INT_MIN) { channel = InVal; buffer = SkipWhitespaces(next); next = FindWordEnd(buffer); for(i=0; i<8; ++i) { InVal = GetIntParam(buffer, next - buffer, 1, 0); if(InVal != INT_MIN) { g_config.ledbarvalues[channel][i] = InVal; buffer = SkipWhitespaces(next); next = FindWordEnd(buffer); } else break; } } } #endif break; default: #if defined(USE_SERIAL) { const CmdDesc *cmd = g_commands; UsartSend("\r\nUsage: ", 9, 1); while(cmd->len) { UsartSend(cmd->cmd, cmd->len, 1); UsartSend(" ", 1, 1); ++cmd; } UsartSend("\r\n",2, 1); } #endif break; } }