Merge pull request #7663 from gemu2015/sml_update

Sml script dynamic baudrate and serial transmit support
This commit is contained in:
Theo Arends 2020-02-04 09:24:45 +01:00 committed by GitHub
commit 3b5a73429b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 50 additions and 0 deletions

View File

@ -1714,6 +1714,30 @@ chknext:
len=0;
goto exit;
}
#endif
#ifdef USE_SML_SCRIPT_CMD
if (!strncmp(vname,"sml(",4)) {
lp+=4;
float fvar1;
lp=GetNumericResult(lp,OPER_EQU,&fvar1,0);
SCRIPT_SKIP_SPACES
float fvar2;
lp=GetNumericResult(lp,OPER_EQU,&fvar2,0);
SCRIPT_SKIP_SPACES
if (fvar2==0) {
float fvar3;
lp=GetNumericResult(lp,OPER_EQU,&fvar3,0);
fvar=SML_SetBaud(fvar1,fvar3);
} else {
char str[SCRIPT_MAXSSIZE];
lp=GetStringResult(lp,OPER_EQU,str,0);
fvar=SML_Write(fvar1,str);
}
lp++;
fvar=0;
len=0;
goto exit;
}
#endif
break;
case 't':

View File

@ -2109,6 +2109,32 @@ init10:
}
#ifdef USE_SML_SCRIPT_CMD
uint32_t SML_SetBaud(uint32_t meter, uint32_t br) {
if (meter<1 || meter>meters_used) return 0;
meter--;
if (!meter_ss[meter]) return 0;
if (meter_ss[meter]->begin(br)) {
meter_ss[meter]->flush();
}
if (meter_ss[meter]->hardwareSerial()) {
if (meter_desc_p[meter].type=='M') {
Serial.begin(br, SERIAL_8E1);
}
}
return 1;
}
uint32_t SML_Write(uint32_t meter,char *hstr) {
if (meter<1 || meter>meters_used) return 0;
meter--;
if (!meter_ss[meter]) return 0;
SML_Send_Seq(meter,hstr);
return 1;
}
#endif
void SetDBGLed(uint8_t srcpin, uint8_t ledpin) {
pinMode(ledpin, OUTPUT);
if (digitalRead(srcpin)) {