可参考Neuron C Programmer‘s Guide 以及NEURON 芯片数据手册。以下信息来源于上海船舶研究所网站。
WWW。LONCONTROL。COM
网络配置(分配节点的地址单元—域号、子网号、节点号以及所属组名和组员号)
读、写地址信息表
const domain_struct *access_domain(int index); //读节点地址信息表,返回对
应Index的域结构指针。
Void update_domain(const domain_struct *domain, //写节点地址信息,将domain
int index); //结构copy给Index对应地址表 。
domain_struct 结构
typedef struct{
unsigned id[DOMAIN_ID_LEN] ; //域id号。
unsigned subnet; //节点子网号。
unsigned :1;
unsigned node :7; //节点号。
unsigned len; //域id长度。
unsigned key[AUTH_KEY_LEN]; //认证密匙。
}domain_struct;
示例:
#include
//所需头文件
#include
#include
#include
domain_struct mydomain; //定义域结构
mydomain=*(access_domain(0)); //读节点域表
mydomain.subnet = 0; //设置节点子网号
mydomain.node = 5; //设置节点号
update_domain(&mydomain,0); //写节点域表
Ø 显示报文的传递(接收和发送)。
一、显示报文的结构
1、 输出显示报文
struct{
boolean priority_on; //是否有优先级
msg_tag tag; //报文标签
int code; //报文码
int data[MAXDATA] //报文数据
boolean authenticated; //是否需要认证
service_typeservice; //报文服务类型
msg_out_addr dest_addr; //目的站地址
}msg_out;
2、 输入显示报文结构
struct{
int code; //报文码
int len; //报文长度
int data[MAXDATA] //报文数据
boolean authenticated; //是否使用认证
service_typeservice; //报文服务类型
msg_in_addr addr; //源报文地址
boolean duplicate; //报文是否重复
unsigned rcvtx; //接收事务ID
}msg_in;
二、发送、接收报文相关函数
msg_alloc() //分配报文缓冲区
msg_cancel() //发送取消
msg_send() //发送报文
msg_free() //释放报文缓冲区
msg_receive() //是否收到新报文
msg_arrivers() //报文收到
msg_completes() //报文发送完成
msg_succeeds() //报文发送成功
msg_fails() //报文发送失败
示例:
1、发送报文
msg_tag test_out; //申明报文标签
msg_out.tag=test_out; //传递报文标签
msg_out.dest_addr.snode.node=0; //定义目的地址节点号
msg_out.dest_addr.snode.subnet=0; //定义目的地址子网号
msg_out.code=0x0c; //定义报文码
msg_out.service=ACKD; //定义报文服务类型
msg_out.dest_addr.snode.type=1; //定义目的节点类型
memcpy(msg_out.data,a0,nLength); //构造报文内容
msg_send(); //发送报文
2、接收报文
when(msg_arrives)
{
if(msg_in.code== 0x01)
{
………. //解析、处理接收报文
}
if(msg_in.code==0x02)
{
………. //解析、处理接收报文
}