Arduino Serial.print()优化

Jef*_*eff 2 c serial-port arduino

unsigned long current_millis_value = 0;
unsigned long previous_millis_value = 0;
unsigned long m = 0;
unsigned int seconds = 0;
unsigned int minutes = 0;
unsigned int hours = 0;

unsigned long clockTimeStart = 1800000; //30 Minutes
unsigned long currentClockTime;

void loop() {
    current_millis_value = millis();
    currentClockTime -= current_millis_value - previous_millis_value;
    previous_millis_value = current_millis_value;

    minutes = (currentClockTime / 1000 / 60);
    seconds = (currentClockTime / 1000) % 60;
    m = (currentClockTime % 100);

    Serial.print(minutes);
    Serial.print(":");
    Serial.print(seconds);
    Serial.print(":");
    Serial.println(m);
}
Run Code Online (Sandbox Code Playgroud)

每写一条串行线,串行写之间的时间间隔为9-11毫秒。有没有一种方法可以优化该Serial.print()方法,以允许在long和String值的类型之间写入多个值?

示例(这无效,但遵循我的想法):

Serial.print(minutes + ":" + seconds + ":" + m);
Run Code Online (Sandbox Code Playgroud)

我知道这不是我正在使用的JavaScript,只是在寻找编写过程的最佳可能性。我知道MOD可能会很昂贵,但是仅执行简单的减法并写出currentClockTime的值,就给我留出了6-7毫秒的间隔时间。

hel*_*922 5

arduino具有类似于字符串连接的半Java语言。我不知道这是否可以加快速度,但是在发送之前它将所有内容连接到一个字符串中。

String package = "" + minutes;
package += ":"+seconds;
package += ":"+m;
Serial.print(package);
Run Code Online (Sandbox Code Playgroud)

如果您能够在另一端重构字符串,则更好的做法是使用Serial.Write并发送原始数据,然后在接收端重构字符串。这样会将每个循环发送的数据量从5-10字节减少到3-4字节。