#include<string.h>//涉及到string函数务必包含头文件
TaskHandle_t TransOneTask;
TaskHandle_t TransArrayTask; // 任务句柄
TaskHandle_t TransNumberTask; // 任务句柄
TaskHandle_t TransStructTask;//声明句柄
TaskHandle_t TransStrTask;//传输字符串句柄
int num = 888;
void TransOne (void * pvParam) {
for (;;) {
int * num = (int *)pvParam;
Serial.print("Trans One number is ");
Serial.println(String(*num));
vTaskDelay(pdMS_TO_TICKS(1000)); // 延迟 1 秒
}
}
char ar[3] = {'a', 'b', 'c'}; // 声明数组
void TransArray(void *pvParam) {
for (;;) {
char *arPtr = (char *)pvParam;
Serial.println(arPtr);
Serial.print("First character is ");
Serial.println(String(arPtr[0])); // 使用 String 类将字符转换为字符串
Serial.print("Second character is ");
Serial.println(String(arPtr[1])); // 同上
Serial.print("Third character is ");
Serial.println(String(arPtr + 2)); // 同上
// 添加一些延迟以避免连续不断地打印
vTaskDelay(pdMS_TO_TICKS(1000)); // 延迟 1 秒
}
// 注意:在实际应用中,无限循环中的任务应该有一个退出条件,或者至少应该有一些形式的流控。
}
int Num[] = {1, 2, 3};
void TransNumber(void *pvParam) {
for (;;) {
int *P_Num_addr = (int *)pvParam;
Serial.print("First Number is ");
Serial.println(String(*P_Num_addr) );
Serial.print("Second Number is ");
Serial.println(String(*(P_Num_addr + 1)));
Serial.print("Third Number is ");
Serial.println(String(P_Num_addr [2]));
// 添加一些延迟以避免连续不断地打印
vTaskDelay(pdMS_TO_TICKS(1000)); // 延迟 1 秒
}
}
typedef struct {
int a;
int b;
} xStruct;
xStruct myStruct = {9, 6};
void TransStruct(void*pvParam) {
for (;;) {
xStruct *structIn = (xStruct *)pvParam;
Serial.print("Struct's Integer is ");
Serial.println(structIn->a);
Serial.print("Sturct's Integer is ");
Serial.println(structIn->b);
vTaskDelay(pdMS_TO_TICKS(1000)); // 延迟 1 秒
}
}
char *chPtr = "Hello World.";
void TransString(void*pvParam) {
for (;;) {
char* cPtrIntask = (char *)pvParam;
Serial.print("Got String is:");
Serial.println(cPtrIntask);
vTaskDelay(pdMS_TO_TICKS(1000)); // 延迟 1 秒
}
}
void setup() {
Serial.begin(115200);
xTaskCreate(TransOne, "TransOne", 1024, (void*)&num, 1, &TransOneTask);
xTaskCreate(TransArray, "TransArray", 1024, (void*)ar, 1, &TransArrayTask);
xTaskCreate(TransNumber, "TransNumber", 1024, (void*)Num, 1, &TransNumberTask);
xTaskCreate(TransStruct, "TransStruct", 1024, (void*)&myStruct, 1, &TransStructTask);
xTaskCreate(TransString, "TransString", 1024, (void*)chPtr, 1, &TransStrTask);
}
void loop() {
// 主循环可以保持为空,因为任务已经在运行
}