nesC1.1语法总结

系统开发语言nesC 系统开发语言nesC        TinyOS最初是用汇编和C语言编写的,在实现TinyOS的基于时间和组件的执行模型时,为了减少编程时的代码量就需要使用大量的宏定义。而大量使用宏定义使得TinyOS组件化的开发显得很麻烦。        因此,开发人员设计出nesC语言作为无线传感器网络的嵌入式操作系统的编程语言,它是完全贴切于无线传感器网络操作系统需求的编程语言,它克服了C语言的很多缺点 阅读详情

1.接口:可参数化,在uses和provides中可加入event/command也可以参数化。

2.  实现部分:实现所有提供的command和event和接口中的event/command。

类型:command,event,async

定义前可以加default

3.一个模块可以为uses的command或event提供默认实现,如果command和event没有连接到任何实现,默认实现被执行。

4.Task:返回值为void,无参数

使用post调用,成功返回1,失败返回0,返回值为unsigned char型

5.Atomic{}实现互斥。

1)代码要短

2)禁止调用command和event

3)禁止使用goto,return,break,continue,case,default和labels以后可能使用。

6.每一个组件只有一个实例,不管是在不同的配置文件中,还是在相同的配置文件中使用两次。

7.如果规格元素参数化而endpoint没有参数值,则称endpoint参数化。

如果endpoint有参数值,那么参数值必须是常量,规格元素必须参数化。

如果参数值的个数与规格元素的参数个数不等,参数值类型不符合规格元素中规定的参数类型,都会报错。

这里的规格元素是指provide和uses中的interface,command,event。

下面的外部规格元素是provide和uses中的interface,command,event。内部规格元素是调用的其他components中的interface,command,event。

8.Wiring:

1)=,涉及外部的规格元素的连接,S1=S2,且一下两个条件必须要满足其一:

   一是S1,S2其一为外部,其一为内部且同为provide或同为uses

   二是S1与S2均为外部,其一为provide,另一个为uses

2)->涉及两个内部连接,将一个used的规格元素连接到一个provide的规格元素

3)<-同2)相反。

9.在连接中,同类型连接同类型,并且如果是command或event,要有相同的函数标识(即同名),若是interface应有相同的接口类型(不同名也可以)。

10.一边的endpoint是参数化的,另一边的endpoint也应该是参数化的。

11.一个规格元素可以被连接多次,结果是:

   1)会导致多个events被signal和多个command被call。

   2)注意,相互独立的配置文件也会引起多连接现象(如两个组件的接口连接到同一个组件的接口)。

12.外部规格元素必需被连接,而内部规格元素可以不被连接(可能在另外的配置中连接或有默认实现)。

14.我们使用中间函数来标识command和event

中间函数的函数体就是对一系列所连接函数的调用。

用I1<->I2表示连接关系,则其中一个为caller,一个为callee

15.满足如下条件的I为callee。

1)I为内部规格元素,且为provide

2)I为外部规格元素,且为used

3)I为一接口实例X的command并且接口X是内部provide或外部used

4)I为一接口实例X的event,并且X是外部provide或内部used。

如果不满足以上条件,则I为callers。

其实条件就是command和event的实现方为callee。

16.一个I连接多个,对多个返回值使用associate combing function,如果该函数返回结果为空,那么就调用默认实现,如果没有默认实现,报错。

17.NesC的运行模型:

1)run-to-completion task (非抢占)(tasks之间为原子操作)

2)interrupt handler (抢占)(task与handler之间不是原子操作)

18.代码:

1)synchronous code(SC),同步代码只能在tasks中调用。(functions,command,events,tasks)

2)Asynchronous code(AC),异步代码至少能被一个中断调用。

Race-free Invariant:任何更新只能发生在SC中或atomic中

异步代码要加async,否则要报错。

19.Unique和uniqueCount函数

C Language Reference Manual C Language Reference Manual c程序员必备,英文版 立即下载

相关推荐

驻极体咪头信号采集避坑指南:如何用5V单电源搞定0.1mV~1V的音频放大?

本文针对驻极体咪头(ECM)在5V单电源系统中信号采集的常见难题,提供了详细的电路设计指南。文章深入分析了咪头的高输出阻抗与微弱信号特性,重点阐述了采用两级运放(如AD8542)实现低噪声放大、直流偏置叠加以及抗混叠滤波的完整方案,并分享了PCB布局、电源去耦等关键调试技巧,帮助工程师稳定采集0.1mV至1V的音频信号。

weixin_29291069的博客 435

博士申请 | 浙江大学孙优贤院士课题组招收智能无人系统方向硕士生/博士生

合适的工作难找?最新的招聘信息也不知道?AI 求职为大家精选人工智能领域最新鲜的招聘信息,助你先人一步投递,快人一步入职!浙江大学网络传感与控制研究组(Group of Networked Sensing and Control, NeSC) 研究组隶属于浙江大学信息学部控制科学与工程学院、工业控制技术国家重点实验室、工业自动化国家工程研究中心。目前,NeSC研究组固定成员18人,包括正教授5人、...

Paper weekly 3023

C# WinForms实战:5分钟用ScottPlot打造专业级示波器界面(附完整代码)

本文详细介绍了如何在C# WinForms应用中,利用ScottPlot.WinForms库快速构建一个专业级的软件示波器界面。通过从环境配置、静态波形绘制到动态数据实时更新的完整实战演示,帮助开发者高效实现高性能的波形显示功能,适用于工业监控、信号分析等多种场景。

weixin_29198045的博客 831

nesC编程入门

1.接口 NesC程序主要由各式组件(component)构成,组件和组件之间通过特定的接口(interface)互相沟通。一个接口内声明了提供相关服务的方法(C语言函数)。例如数据读取接口(Read)内就包含了读取(read)、读取结束(readDone)函数。接口只是制定了组件之间交流的规范,也就是通过某一个接口,只能通过该接口提供的方法实现两个组件之间的交流。但是接口终归只是接口,只是一组...

weixin_34203832的博客 637

别再到处找资源了!WinCC 7.5 SP2官方下载与Windows 10保姆级安装避坑指南

本文提供了WinCC 7.5 SP2在Windows 10上的官方下载与安装全流程指南,重点解决了资源获取难、系统兼容性问题及分卷压缩处理等常见痛点。通过详细的步骤和实用技巧,帮助用户顺利完成安装并优化配置,适用于工控领域的学习者和从业者。

weixin_32924297的博客 473

基于 YOLOv26 的食品包装缺陷检测系统:智能视觉质检方案

本文提出了一种基于YOLOv26深度学习的食品包装缺陷智能检测系统。该系统能够自动识别多种常见包装缺陷,包括密封不良、破损、污染、标签错误等8类问题。相比传统人工检测方法,该系统具有高精度、多类别分类、实时推理等优势。文章详细介绍了系统架构,包含数据采集、预处理、YOLOv26检测模型和后处理四个核心模块,并提供了完整的环境配置和数据处理代码实现。该系统为食品包装行业提供了一种高效、准确的智能视觉质检解决方案。

一键难忘的博客 681

TinyOS04:nesC编程语言

nesC语言特定:组件化 + 基于事件驱动 = 能很好地支持并发一、nesC语言简介 nesC语言都是由组件(component)构成的,由双向性质的接口(interface)连接(wiring)而成 nesC定义了并发模型,该模型是基于任务 (task) 和硬件事件句柄 (hadware event handler),并且在编译期间有数据竞争的检测。 1、组件(components) 基本概念:任

a362523的博客 4421

「HTML和CSS入门指南」hr 标签详解

标签是 HTML5 中用于插入水平分割线的标签,常用于在页面中添加分隔线或者段落之间的分割线。通过灵活运用 标签和属性,我们可以帮助用户更好地理解页面内容,同时也可以美化和装饰页面。在实际应用中需要注意避免过度使用 标签,以使页面看起来简洁明了。

a451319296的博客 7661

关于nesC语言的学习

据说nesC是一种集结了C、C++、java等三种语言的,TinyOS 系统、库及应用程序都是用nesC 语言写的语言写的,这时一种新的用于编写结构化的基于组件的应用程序的语言。nesC 语言主要用于诸如传感器网络等嵌入式系统。 在学习nesC的时候,建议一边看语法和nesC的教学资料,一边编写程序,同时要了解一下TinyOS这一操作系统的原理,因为nesC是为TinyOS而开发的一种新语言,同

jiezhang656的专栏 4606

ROM和RAM在单片机程序运行理解

ROM和RAM是电子设备中两种核心存储组件,主要区别在于:ROM用于长期存储系统程序、用户文件等固定数据,断电后数据不丢失,但写入速度较慢;RAM则用于临时存储运行中的程序和数据,读写速度快但断电后数据会清空。在单片机中,ROM存储程序代码和常量,RAM存储运行时的变量和数据。两者协同工作,ROM如同"永久档案库"保存必要信息,RAM则像"临时工作台"支持高速运算,共同确保设备正常运行。

qq_37999850的博客 1618

Python爬虫教程:如何爬取多平台电商商品信息(价格、评价、库存)

本文介绍了如何编写一个跨平台电商商品爬虫,爬取多个平台的商品信息,包括商品名称、价格、评价等数据。通过Python的爬虫库(如requestsSelenium)和数据处理库(如pandasmatplotlib)的结合,我们可以高效地获取和分析电商平台上的商品信息。

2201_76125261的博客 916

NesC参考手册

nesC 1.1 语言参考手册David Gay, Philip Levis, David Culler, Eric Brewer2003.51 简介nesC 是对 C 的扩展 [2] ,它基于体现 TinyOS 的结构化概念和执行模型而设计 [1] 。 TinyOS 是为传感器网络节点而设计的一个事件驱动的操作系统,传感器网络节点拥有非常有限的资源 ( 举例来说., 8K 字节的程序储存器,51

tony的专栏 6155

Python蓝色跳动的爱心(完整代码)

Python语言实现蓝色跳动的爱心的完整代码。 代码分析 这段代码使用了 库来创建一个动态的爱心图案,并在屏幕上显示带有动态效果的“我爱你”字样。以下是对这段代码的详细分析: 用于创建图形用户界面(GUI)。 用于生成随机数,主要用于控制爱心图案的扩散效果。 中的 , , , 用于数学计算,生成爱心形状和扩散效果。 包含了 等常量,用于控制控件的对齐方式。 2. 全局变量定义 , : 定义画布的大小。 , : 爱心的中心坐标。 : 用于定义爱心形状的缩放

AIGC 1917

cc2538的tinyos 传感器实验_CC2538之TinyOS例程实验:1-blink nesC语法

例程目录tinyos-main-release_tinyos_2_1_2\apps\cc2538_Test\blink,包含三个文件:Makefile,BlinkAppC.nc,BlinkC.nc下面将通过该例程讲解TinyOS nesC的语法:1,TinyOS的nesC文件分为四种,除了Makefile后缀为.nc文件,Makefile,configuration,module,interfac...

weixin_42552124的博客 501

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

TinyOS、NesC程序开发经验谈

TinyOS、NesC程序开发经验谈      自己当初不知到为什么,导师让我选做图像(在硕士一年级下学期时开发了人脸与指纹融合识别系统),还是无线传感器网络(WSN)时,我从导师偏向的介绍中坚定做WSN,之后虽然还有别的与WSN无关的项目去做,但知道自己主要研究方向是WSN。      05年11月和06年6月,两次参加Crossbow的培训,第一次是什么不懂,第二次是带着项目问题过去的,自然收

飞鸟的专栏 4574

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

设置nesC在vim中的语法高亮

默认的vim没有支持nesC语法高亮,给阅读源码带来不便。不过可以通过装NesC Syntax Highlighting插件来解决这个问题,具体操作如下: 步骤一:下载插件 在http://www.vim.org/scripts/script.php?script_id=1847下载NesC Syntax Highlighting : The Syntax Highlighti

a183635870的博客 376

TinyOS、NesC程序开发经验谈[转载]

TinyOS、NesC程序开发经验谈[转载] 说明:来源于http://chinawangquan.spaces.live.com/blog/cns!9CF795352E94BF70!434.entry。因为种种原因吧,我参与TinyOS的开发不多,远远达不到对NS-2的理解和水平。这篇文章写的非常不错,转过来有兴趣的可以看看。作者博客:http://chinawangquan.spac

王小王要一直fighting 1076

nesC语法集粹

nesC语法集粹 1.接口是一系列声明的函数集合,接口是双向的。接口需要定义一组命令函数,这些函数由接口提供者实现,还可以定义一组“事件”函数,这些函数由接口的使用者实现。 nesC-file: incli...

492

设置nesC在vim中语法高亮

默认的vim没有支持nesC语法高亮,给阅读源码带来不便。不过可以通过装NesC Syntax Highlighting插件来解决这个问题,具体操作如下: 步骤一:下载插件 在http://www.vim.org/scripts/script.php?script_id=1847下载NesC Syntax Highlighting : The Syntax Highlighting

eddy_liu的专栏 880

ubuntu Linux下实现gedit支持NesC语法高亮

<br /><br />在TinyOS下主要采用nesC编程,一种C语言的近亲。平时默认打开文本的工具是gedit,将以下代码保存为nesc.lang<br /> <br /><?xml version="1.0" encoding="UTF-8"?> <!--<br /> <br /> nesC (network embedded system C) GtkSourceview language definition<br /> based on GtkSourceview C language de

缤江数智技术专栏 2818

vim支持nesC语法高亮问题

命令行中输入vim,如果未安装会得到下面的提示: 程序“vim”已包含在下列软件包中:  * vim  * vim-gnome  * vim-tiny  * vim-gtk  * vim-nox 请尝试:apt-get install 按照提示输入apt-get install vim安装。

u012336939的专栏 731

Ubuntu下实现gedit支持NesC语法高亮的办法,简单好用

1、用gedit在如下文件夹中打开nesc.lang.      sudo gedit /usr/share/gtksourceview-2.0/language-specs/nesc.lang 2、将以下代码全部复制到打开的文件中:    nesC (network embedded system C) GtkSourceview langua

mzjmzj123的专栏 325

vim for nesC

首先到http://www.vim.org/scripts/script.php?script_id=1847下载最新版本的插件 将下载的nc.vim拷贝到~/.vim/syntax目录中 然后修改home下.vimrc的配置,将 [python] view plaincopy augroup filetypedetect    au! BufRead,BufNew

XXL的技术博客 1096
上一篇: 过度完美主义让人焦虑
下一篇: 杂想-9.26
骑行的蜗牛
博客等级 码龄21年 107粉丝 86原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值