基于SECS协议开发的简明教程(3)

发布于:2022-12-03 ⋅ 阅读:(849) ⋅ 点赞:(0)

前面两篇文章分别介绍了如何利用SECS SDK搭建一个支持SECS协议的工程,以及如何编辑生成需要交换数据的ID.  有了前面这两步就可以正常跑了。本文就介绍如何发送控制命令消息和SnFn数据消息。所有的都是类似的,本文讲几个,其他的依次类推。

一、怎么发送自带HSMS Header头部的控制命令

1、怎么发送 Deselect_req控制命令

	SenderBuffer sender(this);
    HSMSHeader header= { 0 };

    sender.Begin();
	get_header_of_Deselect_req(header);
	sender.Add_HSMSHeader(&header);
	sender.End();
	sender.Send();

2、怎么发送 Separate_req控制命令

	HSMSHeader header;
	SenderBuffer sender(this);

	sender.Begin();
    get_header_of_Separate_req(header);
    sender.Add_HSMSHeader(&header);
    sender.End();
	sender.Send();

二、怎么发带有数据项的数据消息

1、怎么主动发一个带有2个列表项的SnFn数据Primary消息

    HSMSHeader header;
	SenderBuffer sender(this);

    int Sn = xx;//这里你自己填写实际需要的Stream号
    int Fn = xx;//这里你自己填写实际需要的Function号

	sender.Begin();

	get_header_of_Data_message_primary(header, true,	Sn, Fn);

    //1.添加头部
	sender.Add_HSMSHeader(&header);

    //2.添加数据是带有2个Item的List
	sender.Add_LIST_Header(2);

    //3.然后给List添加2个ASCII类型的Item

	sender.BeginList();

		sender.Add_ITEM_Header(ASCII, strlen(PARAM1)); //这里放你的第1个参数,自己定义PARAM1
		sender.Add_ASCII(PARAM1);

		sender.Add_ITEM_Header(ASCII, strlen(PARAM2));//这里放你的第2个参数,自己定义PARAM1
		sender.Add_ASCII(PARAM2);

	sender.EndList();
	sender.End();
    sender.Send();

2、怎么回复发一个带有2个列表项的SnFn数据Reply消息

    
    HSMSHeader header = (*pHdr);
	SenderBuffer sender(this);
    sender.Begin();

	get_header_of_Data_message_reply(header);

    //1.添加头部
	sender.Add_HSMSHeader(&header);

    //2.添加数据是带有2个Item的List
	sender.Add_LIST_Header(2);

    //3.然后给List添加2个ASCII类型的Item

	sender.BeginList();

		sender.Add_ITEM_Header(ASCII, strlen(PARAM1)); //这里放你的第1个参数,自己定义PARAM1
		sender.Add_ASCII(PARAM1);

		sender.Add_ITEM_Header(ASCII, strlen(PARAM2));//这里放你的第2个参数,自己定义PARAM1
		sender.Add_ASCII(PARAM2);

	sender.EndList();
	sender.End();
    sender.Send();

本文所提到的SECS SDK包可在CSDN下载

如有疑问或咨询,请评论留言或在CSDN站内消息联系。


网站公告

今日签到

点亮在社区的每一天
去签到