关于本地节点地址查询 点击:1917 | 回复:4



gongkongedit

    
  • 精华:1099帖
  • 求助:0帖
  • 帖子:14392帖 | 54470回
  • 年度积分:0
  • 历史总积分:622
  • 注册:2008年9月08日
发表于:2001-11-02 13:13:00
楼主
请问衣卓先生,在Neuron C函数中,哪个函数可以用来读取本地节点的地址(NeuronID,或者Subnet/Node地址),如何使用?谢谢。



gongkongedit

  • 精华:1099帖
  • 求助:0帖
  • 帖子:14392帖 | 54470回
  • 年度积分:0
  • 历史总积分:622
  • 注册:2008年9月08日
发表于:2001-09-27 10:28:00
1楼
不是衣卓回复也可以。

gongkongedit

  • 精华:1099帖
  • 求助:0帖
  • 帖子:14392帖 | 54470回
  • 年度积分:0
  • 历史总积分:622
  • 注册:2008年9月08日
发表于:2001-09-27 20:24:00
2楼
可参考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) { ………. //解析、处理接收报文 }

无心心

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 2回
  • 年度积分:0
  • 历史总积分:2
  • 注册:2001年9月28日
发表于:2001-09-28 10:21:00
3楼
读取NEURON_ID: unsigned char neuronid[6]; memcpy(neuronid, read_only_data.neuron_id, 6);

zw76812

  • 精华:0帖
  • 求助:0帖
  • 帖子:9帖 | 567回
  • 年度积分:0
  • 历史总积分:654
  • 注册:2001年7月18日
发表于:2001-11-02 13:13:00
4楼
query id

热门招聘
相关主题

官方公众号

智造工程师