730 次浏览
程序执行过程中,字符串长度可能会动态变化。如果您希望确保始终有足够的内存可用于您的字符串,可以使用 reserve() 函数保留一些内存。语法String1.reserve(n_bytes);其中 String1 是您要为其保留内存的字符串,n_bytes (无符号整数) 是要在内存中保留的字节数。示例String s1 = "Hello"; void setup() { // 在此处放置您的设置代码,以运行一次: Serial.begin(9600); Serial.println(); s1.reserve(20); s1 = s1+" World!"; Serial.println(s1); s1 = s1+" I'm now trying ... 阅读更多
6K+ 次浏览
Arduino 中的 remove 函数可帮助您从字符串中删除一个或多个字符。语法myString.remove(index, count)此处,index 指的是从哪里开始删除。请注意,Arduino 中的索引从 0 开始。因此,在字符串“Hello”中,'H' 的索引为 0,'e' 的索引为 1,依此类推。count 参数是可选的,它指定要删除的字符数。如果您未指定 count,则将删除从索引开始到字符串末尾的所有字符。如果您将 count 指定为 3,则将删除从索引位置开始的 3 个字符。... 阅读更多
4K+ 次浏览
有时,字符串可能包含前导或尾随空格。Arduino 有一个 trim() 函数,可以删除字符串中所有这些前导/尾随空格。语法String1.trim()其中 String1 是您需要修剪的字符串。请注意,此函数不返回值。String1 本身已修改。示例以下示例说明了这一点:void setup() { // 在此处放置您的设置代码,以运行一次: Serial.begin(9600); Serial.println(); String string1 = " Hello World! "; Serial.println(string1); string1.trim(); Serial.println(string1); } void loop() { // 在此处放置您的主代码,以重复运行: }输出串行监视器输出为... 阅读更多
705 次浏览
就像 indexOf() 帮助识别字符串中子字符串的第一次出现一样,lastIndexOf() 函数帮助识别最后一次出现。这是因为 lastIndexOf() 执行反向搜索,而 indexOf() 执行正向搜索。语法myString.lastIndexOf(substr)其中 substr 是要在 myString 中搜索的子字符串。它可以是字符或字符串。就像 indexOf() 一样,此函数也接受一个可选的 from 参数,如果您希望反向搜索从特定索引开始。在这种情况下,语法为:语法myString.lastIndexOf(substr, from)就像 indexOf() 一样,此函数要么返回字符串中子字符串的最后一个索引,要么在没有匹配项时返回 -1... 阅读更多
656 次浏览
Arduino 中的 indexOf() 函数从开头扫描字符串,并返回字符串中指定子字符串的第一个索引。语法为:语法myString.indexOf(substr)其中 substr 是要搜索的子字符串。它可以是字符或字符串类型。可以选择提供不同的起点开始搜索,在这种情况下,语法为:语法myString.indexOf(substr, from)其中 from 是搜索应开始的索引。此函数返回字符串中子字符串第一次出现的索引,或者在未找到匹配项时返回 -1。示例void setup() { // 在此处放置您的设置代码,... 阅读更多
764 次浏览
我们知道 String1.equals(String2) 可用于在 Arduino 中查找 String1 和 String2 是否相等。但是,此函数区分大小写。因此,如果即使单个字符的大小写存在差异,此函数也将返回 false。人们用来执行两个字符串的不区分大小写比较的一种策略是将两个字符串都转换为小写,然后进行比较。但是,Arduino 有一个函数可以比较两个字符串,同时忽略大小写。正如您所料,该函数是 equalsIgnoreCase。示例下面给出了一个示例实现:void setup() { // 在此处放置您的... 阅读更多
38K+ 次浏览
结构体仅仅是不同类型变量的集合。Arduino 中的结构体模仿 C 语言中的结构体。因此,如果您熟悉 C 结构体,Arduino 结构体应该不会有任何问题。结构体声明语法如下:语法struct structName{ item1_type item1_name; item2_type item2_name; . . . itemN_type itemN_name; }以下给出了一个示例:示例struct student{ String name; int age; int roll_no; }结构体的元素使用 .(点) 表示法访问。此表示法可用于读取结构体的元素或更改... 阅读更多
830 次浏览
如果您希望在 FreeRTOS 中挂起任务,可以使用 vTaskSuspend() 函数。语法为:语法void vTaskSuspend( TaskHandle_t xTaskToSuspend );如您所见,它将要挂起的任务的句柄作为参数,并且不返回任何内容。可以使用 vTaskResume() 恢复挂起的任务。语法为:语法void vTaskResume( TaskHandle_t xTaskToResume );这再次获取要恢复的任务的句柄,并且不返回任何内容。为了查看示例,我们将逐步完成以下代码:https://exploreembedded.com/wiki/Task_Suspend_and_Resume如您所见,最初声明了四个任务句柄,并且在... 阅读更多
1K+ 次浏览
信号量和互斥体是在 FreeRTOS 中实现任务同步的工具/机制。通常,两个任务需要共享一个资源,或者一个任务需要告诉另一个任务它处于空闲/等待状态。信号量和互斥体在此提供帮助。在本文中,我们将了解信号量和互斥体的概念。信号量信号量是任务之间的一种同步机制。更具体地说,它是一种信号机制。处于等待状态的任务可能会收到一个信号量,该信号量指示它执行一些工作。一旦任务完成了该工作,它将返回信号量。在实践中,这是通过... 阅读更多
872 次浏览
默认情况下,在 Windows 机器上,Arduino 将所有草图保存在 C:\Users\\Documents\Arduino 中。现在,无论出于何种原因,您可能希望更改此默认位置。一个常见的原因是 C: 的存储空间有限,并且您希望将草图保存到具有足够可用空间的驱动器中。为了更改默认位置,请转到文件→首选项。在打开的对话框中,第一个输入字段是草图本位置。单击它旁边的“浏览”按钮并选择您所需路径。更改路径后,单击确定。现在,如果您尝试保存新的... 阅读更多