void loop() { //显示系统参数信息 if (Serial_available()) { //WIFI消息 处理 wifi_process_msg(); } }
/******************************************************************************* * 函数名称: main * 输入参数: * 输出参数: * --返回值: * 函数功能: -- *******************************************************************************/ void main(void) { //Stop watchdog timer to prevent time out reset WDTCTL = WDTPW + WDTHOLD; /* power on setup */ setup(); // __enable_irq(); //EA = 1 __enable_interrupt(); while (1) { taskFlag = Serial_available(RF.TxBuff, Serial_fixed_TxRx_Len); if (1u == taskFlag) { taskFlag = 0u; CC1101_Send(RF.TxBuff, RF_payloadSize); } else { } taskFlag = CC1101_available(Serial.TxBuff, RF_payloadSize); if (1u == taskFlag) { taskFlag = 0u; Serial_TxMode(); } else { } //CC1101_debug(); }//end while }
void CommandProcess() { // Read incoming control messages if (Serial_available() >= 2) { char start=Serial_read(); if (start == '@') {// Start of new control message int command = Serial_read(); // Commands if (command == 'h') {//Hook AHRS Stack Device // Read ID char id[2]; id[0] = GetChar(); id[1] = GetChar(); // Reply with synch message printf("@HOOK"); Serial_write(id, 2); } else if (command == 'v') {//Check Version CheckVersion(); } else if (command == 'c') {// A 'c'calibration command SensorCalibration(); } else if (command == 'b') {// 'b'lock erase flash FlashControl(); } else if (command == 'p') {// Set 'p'id command SetPID(); } else if (command == 'm') {// Set report 'm'ode char mode = GetChar(); if (mode == 'e') {// Report AHRS by 'e'uler angle report_mode = REPORT_AHRS_EULER; } else if (mode == 'q') {// Report // Report AHRS by 'q'quaternion report_mode = REPORT_AHRS_QUATERNION; } else if (mode == 'r') {// Report sensor 'r'aw data report_mode = REPORT_SENSORS_RAW; } else if (mode == 'c') {// Report sensor 'c'alibrated data report_mode = REPORT_SENSORS_CALIBRATED; } else if (mode == 'm') {// Report 'm'otor power distribution report_mode = REPORT_MOTOR_POWER; } else if (mode == 'v') {// Report 'v'elocity report_mode = REPORT_VELOCITY; } else if (mode == 's') {// Report 's'tatus report_status(); } else if (mode == 'p') {// Report controller 'p'id char type = GetChar(); if (type == 'p') // 'p'id report_mode = REPORT_PID; else if (type == 'r') //'r'ate pid report_mode = REPORT_RATE_PID; else if (type == 'a') //'a'ltitude hold pid report_mode = REPORT_ALTHOLD_PID; } } else if (command == 'f') {// Set report 'f'ormat char format = GetChar(); if (format == 'b') {// Report 'b'inary format report_format = REPORT_FORMAT_BINARY; } else if (format == 't') {// Report 't'ext format report_format = REPORT_FORMAT_TEXT; } } else if (command == 's') {// 's'tream output control char mode = GetChar(); if (mode == 's') {// 's'tart stream stream_mode = STREAM_START; } else if (mode == 'p') {// 'p'ause stream stream_mode = STREAM_PAUSE; } else if (mode == 't') {// 't'oggle stream if(stream_mode==STREAM_START) stream_mode = STREAM_PAUSE; else stream_mode = STREAM_START; } } } else { if (report_format == REPORT_FORMAT_TEXT) { printf("Unknown command.\n"); } } // Skip character } }
void Plugin_011_FLC(void) // wordt vanuit de hoofdloop van de Nodo-core zeer frequent aangeroepen. { static byte count=0; char received; if(PLUGIN_011_LedTimer>millis()) digitalWrite(PIN_WIRED_OUT_2, HIGH); else digitalWrite(PIN_WIRED_OUT_2, LOW); while(Serial_available()) { received=Serial_read(); if(count<PLUGIN_011_BUFFERSIZE && isprint(received) && (isalpha(received) || isxdigit(received))) PLUGIN_011_buffer[count++]=received; if(received==0x0A) { PLUGIN_011_buffer[count]=0; PLUGIN_011_WatchDogTimer=millis() + PLUGIN_011_WATCHDOG_TIMEOUT; #if HARDWARE_SERIAL_1 Serial.print(PLUGIN_011_buffer); #endif // HARDWARE_SERIAL_1 byte source = PLUGIN_011_buffer[0]; byte b1 = PLUGIN_011_hextobyte(PLUGIN_011_buffer,1); byte b2 = PLUGIN_011_hextobyte(PLUGIN_011_buffer,3); byte b3 = PLUGIN_011_hextobyte(PLUGIN_011_buffer,5); byte b4 = PLUGIN_011_hextobyte(PLUGIN_011_buffer,7); OTGW_Data=(((unsigned long)b1)<<24) + (((unsigned long)b2)<<16) + (((unsigned long)b3)<<8) + ((unsigned long)b4); if(source==0x54) // Source = Thermostat { if (b2 == 0x18) // +1 Room Temperature { TempFloat=b3+b4*((float)1/256); PLUGIN_011_VarChange(PLUGIN_011_CORE + 1, TempFloat, OTGW_Data); } if (b2 == 0x10) // +5 Thermostat Set Point { TempFloat=b3+b4*((float)1/256); PLUGIN_011_VarChange(PLUGIN_011_CORE + 5, TempFloat, OTGW_Data); } } // if(source==0x54) if(source==0x42) // Source = Boiler { if (b2 == 0x19) // +2 Boiler Water Temperature { TempFloat=b3+b4*((float)1/256); PLUGIN_011_VarChange(PLUGIN_011_CORE + 2, TempFloat, OTGW_Data); } if (b2 == 0x11) // +3 Relative Modulation { TempFloat=b3+b4*((float)1/256); PLUGIN_011_VarChange(PLUGIN_011_CORE + 3, TempFloat, OTGW_Data); } if (b2 == 0x12) // +4 Boiler Water Pressure { TempFloat=b3+b4*((float)1/256); PLUGIN_011_VarChange(PLUGIN_011_CORE + 4, TempFloat, OTGW_Data); } if (b2 == 0x00) // Boiler Status { TempFloat=(float)((b4 & 0x8) >> 3); // +6 Flame Status in bit 3 PLUGIN_011_VarChange(PLUGIN_011_CORE + 6, TempFloat, OTGW_Data); TempFloat=(float)((b4 & 0x4) >> 2); // +8 DHW Mode in bit 2 PLUGIN_011_VarChange(PLUGIN_011_CORE + 8, TempFloat, OTGW_Data); } if (b2 == 0x1C) // +7 Boiler Water Return Temperature { TempFloat=b3+b4*((float)1/256); PLUGIN_011_VarChange(PLUGIN_011_CORE + 7, TempFloat, OTGW_Data); } }// if (source==0x42) #if HARDWARE_SERIAL_1 Serial.println(); #endif PLUGIN_011_buffer[0]=0; count=0; } // if(received[x]==..)
void serialEventRun(void) { if (Serial_available && serialEvent && Serial_available()) serialEvent(); }