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,则将删除从 index 开始到字符串末尾的所有字符。如果您将 count 指定为 3,则将删除从 index 位置开始的 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: 磁盘存储空间有限,您希望将草图保存到具有足够可用空间的驱动器中。为了更改默认位置,请转到 文件 → 首选项。在打开的对话框中,第一个输入字段是草图本位置。单击它旁边的“浏览”按钮并选择您所需路径。更改路径后,单击“确定”。现在,如果您尝试保存新的... 阅读更多