mirror of
https://github.com/arendst/Tasmota.git
synced 2025-04-24 23:07:17 +00:00
sml dynamic baud and transmit support
This commit is contained in:
parent
26cee00e2f
commit
fc92896ef5
@ -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':
|
||||
|
@ -2109,6 +2109,50 @@ 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);
|
||||
|
||||
/*
|
||||
|
||||
uint8_t sbuff[32];
|
||||
uint8_t *ucp=sbuff,slen=0;
|
||||
char *cp=hstr;
|
||||
while (*cp) {
|
||||
if (!*cp || !*(cp+1)) break;
|
||||
uint8_t iob=(sml_hexnibble(*cp) << 4) | sml_hexnibble(*(cp+1));
|
||||
cp+=2;
|
||||
*ucp++=iob;
|
||||
slen++;
|
||||
if (slen>=sizeof(sbuff)) break;
|
||||
}
|
||||
meter_ss[meter]->write(sbuff,slen);
|
||||
return slen;
|
||||
*/
|
||||
return 1;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
void SetDBGLed(uint8_t srcpin, uint8_t ledpin) {
|
||||
pinMode(ledpin, OUTPUT);
|
||||
if (digitalRead(srcpin)) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user