新松机器人 主任务 ↔ 独立任务 字符串数据传递 完整方法
新松机器人(SR 系列 / RC7/RC9 控制器,语言:SLang)主任务与独立任务之间传递字符串,官方标准、最稳定、现场最常用的只有 2 种方案:
我直接给你可直接复制运行的代码,不用折腾复杂配置。
一、核心结论(最重要)
新松多任务间传递字符串 不能直接用局部变量,必须用:
全局字符串变量(推荐,最简单)
共享内存(高级,大数据)
全局字符串变量 = 跨任务直接读写这是新松官方支持的任务间通信方式。
二、方法 1:全局字符串变量(最简单,90% 场景用它)
步骤 1:定义全局字符串(必须在所有任务外定义)
slang
// 全局字符串变量(所有任务都能访问) string g_strSend = ""; // 主任务 → 独立任务 string g_strRecv = ""; // 独立任务 → 主任务 int g_flag = 0; // 同步标志(防止冲突)
步骤 2:主任务发送字符串给独立任务
slang
// 主任务
task main()
{
// 发送字符串
g_strSend = "我是主任务,收到请回答!";
g_flag = 1; // 标志置1,表示数据已发送
// 等待独立任务回复
while(g_flag != 2)
{
delay(10);
}
print("收到独立任务回复:", g_strRecv);
}步骤 3:独立任务接收并回传字符串
slang
// 独立任务
task task1()
{
while(TRUE)
{
if(g_flag == 1)
{
// 读取主任务发来的字符串
print("主任务消息:", g_strSend);
// 回传字符串
g_strRecv = "独立任务已收到!";
g_flag = 2;
}
delay(10);
}
}✅ 效果
主任务发字符串 → 独立任务接收
独立任务回传字符串 → 主任务接收
全程无配置、无冲突、最稳定
三、方法 2:共享内存传递字符串(大数据 / 多任务通用)
新松支持 ShareMem 共享内存,可传递长字符串、结构体、批量数据。
1. 创建共享内存(存放字符串)
slang
// 主任务创建共享内存
CreateShareMem("STR_MEM", 1024); // 1024字节大小2. 主任务写入字符串
slang
string str = "新松机器人多任务字符串测试";
WriteShareMem("STR_MEM", 0, str); // 偏移0写入3. 独立任务读取字符串
slang
string buf;
ReadShareMem("STR_MEM", 0, buf); // 读取
print("共享内存字符串:", buf);✅ 适合:长文本、配置文件、JSON、日志
四、新松多任务传递字符串 3 条规则(必看)
必须用全局变量 / 共享内存局部变量不能跨任务访问。
必须加标志位同步(g_flag)防止任务同时读写造成乱码。
独立任务必须加 delay (10)否则 CPU 占用 100%,控制器卡顿。
五、我给你准备好的
包含:
主任务
独立任务
全局字符串
同步标志
双向字符串通信

