以下只列出主要代码

1.将Secs.dll、secs.h、Secs.lib导入工程中

2.定义服务器和客户端的对象句柄、相关结构体

HSECS secs_Client;
HSECS secs_Server;

SECS_CFG settings;

3.启动服务器(或开启客户端)

        memset(&settings,0,sizeof(settings));settings.t3 = 3000; // 45000;settings.t5 = 10000;settings.t6 = 5000;settings.t7 = 10000;settings.t8 = 5000;settings.pfn_on_connect = OnConnect;settings.pfn_on_recv_message = OnRecvMessage;settings.pfn_on_close = OnClose;settings.device_id = 0;settings.mode = HSMS_PASSIVE;settings.local_ip = inet_addr("127.0.0.1"); settings.local_port = 5000;settings.remote_ip = inet_addr("127.0.0.1")settings.remote_port = 5000;secs_Server = CreateSecs(&settings);if (secs_Server == NULL) {return FALSE;}else{if(settings.mode = HSMS_PASSIVE){BOOL bStartServerOK = FALSE;bStartServerOK = SecsStartupServer(secs_Server);if (!bStartServerOK){DestroySecs(secs_Server);return FALSE;}}else{BOOL bStartServerOK = FALSE;bStartServerOK =SecsConnect(secs_Server);if(!bStartServerOK){   DestroySecs(secs_Server);return FALSE;}}}

4.三个响应消息(链接、数据接收、断开链接)

BOOL WINAPI OnConnect(HSECS hServer,HSECS hSecs,USHORT usDevId)
{secs_Client = hSecs;return TRUE;
}
DWORD WINAPI OnRecvMessage(HSECS session_handle, unsigned long id,unsigned char stream,unsigned char function,SECS_ITEM* ptr_item)
{unsigned long proc_result = do_process_msg(id, stream, function, ptr_item);return proc_result;
}VOID WINAPI OnClose(HSECS hSecs)
{secs_Client = NULL;
}

5.消息处理

unsigned long do_process_msg( DWORD msgid, UCHAR stream,UCHAR function,SECS_ITEM* ptr_item)
{// normal processint ret_code = SECS_SYS_SUCCESS;switch (stream){case 1: // ========= S1switch (function){case 1:  ret_code = on_s1_f1(ptr_item, msgid);    break;  // S1,F1default: ret_code = SECS_SYS_ERROR_UFN;            break;}break;case 2: // ========= S2switch(function){//        case 33: ret_code = on_s2_f33(ptr_item, msgid);    break;  // S2,F33//         case 35: ret_code = on_s2_f35(ptr_item, msgid);    break;  // S2,F35//         case 37: ret_code = on_s2_f37(ptr_item, msgid);    break;  // S2,F37case 41: ret_code = on_s2_f41(ptr_item, msgid);   break;  // S2,F41default: ret_code = SECS_SYS_ERROR_UFN;         break;}break;default:ret_code = SECS_SYS_ERROR_USN;break;}return ret_code;
}
int on_s1_f1(SECS_ITEM* ptr_item, DWORD msgid)
{// reply S1,F2SECS_ITEM* item_s1f2 = SecsCreateItemList(2);SECS_ITEM* item_mdln = SecsCreateItemAscii(EQ_MDLN);SECS_ITEM* item_softrev = SecsCreateItemAscii(EQ_SOFTREV);SecsListItemAppend(item_s1f2, item_mdln);SecsListItemAppend(item_s1f2, item_softrev);::SecsReplyMessageItem(g_secs_Client,1, 2,item_s1f2, 0, msgid);SecsDeleteItem(item_s1f2);return SECS_SYS_SUCCESS;
}
int on_s2_f41(SECS_ITEM* ptr_item, DWORD msgid)
{// reply S1,F2SECS_ITEM* item_s1f2 = SecsCreateItemList(2);SECS_ITEM* item_mdln = SecsCreateItemAscii(EQ_MDLN);SECS_ITEM* item_softrev = SecsCreateItemAscii(EQ_SOFTREV);SecsListItemAppend(item_s1f2, item_mdln);SecsListItemAppend(item_s1f2, item_softrev);::SecsReplyMessageItem(g_secs_Client,1, 2,item_s1f2, 0, msgid);SecsDeleteItem(item_s1f2);return SECS_SYS_SUCCESS;
}

6.发送消息

SECS_ITEM* ptr_item_First = SecsCreateItemList(2);SECS_ITEM* ptr_item_First_1 = SecsCreateItemList(1);SECS_ITEM* ptr_item_First_1_1 = SecsCreateItemList(2);SECS_ITEM* ptr_item_First_1_1_1 = SecsCreateItemAscii("BIBStrip_1234567890");SECS_ITEM* ptr_item_First_1_1_2 = SecsCreateItemList(1);SECS_ITEM* ptr_item_First_1_1_2_1 = SecsCreateItemList(2);SECS_ITEM* ptr_item_First_1_1_2_1_1 = SecsCreateItemAscii("MapData");SECS_ITEM* ptr_item_First_1_1_2_1_2 = SecsCreateItemAscii("");SECS_ITEM* ptr_item_First_2 = SecsCreateItemList(2);SECS_ITEM* ptr_item_First_2_1 = SecsCreateItemU1(0);SECS_ITEM* ptr_item_First_2_2 = SecsCreateItemList(0);SecsListItemAppend(ptr_item_First,ptr_item_First_1);SecsListItemAppend(ptr_item_First_1,ptr_item_First_1_1);SecsListItemAppend(ptr_item_First_1_1,ptr_item_First_1_1_1);SecsListItemAppend(ptr_item_First_1_1,ptr_item_First_1_1_2);SecsListItemAppend(ptr_item_First_1_1_2,ptr_item_First_1_1_2_1);SecsListItemAppend(ptr_item_First_1_1_2_1,ptr_item_First_1_1_2_1_1);SecsListItemAppend(ptr_item_First_1_1_2_1,ptr_item_First_1_1_2_1_2);SecsListItemAppend(ptr_item_First,ptr_item_First_2);SecsListItemAppend(ptr_item_First_2,ptr_item_First_2_1);SecsListItemAppend(ptr_item_First_2,ptr_item_First_2_2);unsigned long msg_id = SecsSendMessageItem(g_secs_Client, 14, 1, ptr_item_First, SECS_FLAGS_NEED_REPLY);//发送消息主要函数

所发消息如下图

7.断开链接

if(settings.mode = HSMS_PASSIVE){SecsCloseServer(g_secs_Server);DestroySecs(g_secs_Server);g_secs_Server = NULL;}else{SecsDisconnect(g_secs_Server);DestroySecs(g_secs_Server);g_secs_Server = NULL;}

SECS/GEM通信相关推荐

  1. SECS/GEM/GEM300/EAP 讲解(三)半导体协议

    来自secs/gem网站 www.secsgem.cn 第一章 介绍 第二章 GEM 收集事件 第三章 数据轮询 第四章 GEM 工厂应用支持 第五章 报警 第六章 配方管理 第七章 文档 第八章 设 ...

  2. 【翻译】SECS GEM系列之二:GEM 收集事件

    在开始我们的SECS/GEM系列之前,让我们先来解释GEM标准的一个关键特性,即Collection Events.我们将从解释它们如何工作开始,然后进一步说明为什么它们在从制造设备收集数据方面如此有 ...

  3. EAP通讯基础之SECS/GEM/GEM300mm

    EAP系统用于控制半导体设备进行自动化生产.与MES系统整合,校验产品信息,自动做账,同时收集产品生产过程中的制程数据和设备参数数据,帮助提高半导体工厂的生产效率,避免人工操作失误,提高产品良率. 而 ...

  4. 半导体通讯标准EAP、SECS/GEM视频介绍

    GEM(或SECS / GEM)是由半导体设备材料倡议制定的一组连接标准.这些标准用于定义自动化设备与主机工厂网络之间的通信,从而实现智能工厂制造. SECS是半导体设备通信标准的首字母缩写.GEM是 ...

  5. SECS/GEM EAP 设备自动化功能原理和设计方案

    半导体EAP(Equipment Automation Programming)实现了对生产线上机台的实时监控,是工厂自动化不可缺少的控制系统.EAP系统与FAB中的机台紧密相关,系统的设计与开发必须 ...

  6. SECS/GEM 半导体设备通讯标准学习笔记

    1. SECS/GEM简介 SEMI:Semiconductor Equipment and Materials International 国际半导体设备与材料产业协会 SECS:Semicondu ...

  7. C++实现SECS/GEM

    SECS/GEM (Standard Equipment Communication System/Generic Equipment Model) 是一种用于在设备之间传输数据和控制信息的协议.它主 ...

  8. SECS/GEM金南瓜通讯平台

    全面支持E5.E30.E37 等 SECS/GEM 协议以及E39.E40.E94.E87.E90.E173等GEM300 协议,满足 APC.FDC 和 EAP 的高性能要求. 事件收集 Host ...

  9. 半导体设备通讯标准(SECS/GEM)

    ​ 目录 收起 前言 一.SECS/GEM 简介 二.系统的硬件组成 三.搞清楚需求.(搞明白是什么,基本玩法规则) 1.secs是一个协议族 2.secs的消息通信 3.甲方的secs的标准不一定是 ...

  10. SECS/GEM通信协议学习之报文

    SECS/GEM通信协议学习笔记之报文格式 转载自他山之石 一.HSMS报文格式 HSMS 报文消息长度用一个 4 字节无符号整数表示,它表示消息头部和消息文本的总字节数,在传输过程中,高字节在前,低 ...

最新文章

  1. STM32-USART接收程序
  2. go get 获取被墙依赖包解决方法
  3. php微信支付na,虚拟支付
  4. python【蓝桥杯vip练习题库】ALGO-145 4-1打印下述图形
  5. 4月3日 尤金.卡巴斯基在北大精彩演讲
  6. [八省联考2018]劈配 (匈牙利)
  7. 前端学习(2554):组件基础和组件注册
  8. inurl news.php id,news.php
  9. ROS入门-1认识Linux系统,虚拟机安装Ubuntu
  10. 分布式搜索引擎ElasticSearch(四) -- 插件使用
  11. python struct pack_Python(12)教程11.标准库简介——第二部分
  12. Linux:linux终端命令关闭pycharm
  13. office及各类软件的图标修复
  14. android 地址json文件,Android访问assets本地json文件的方法
  15. win10增加图片查看器
  16. java 日期 面试题_Java面试试题日期和时间
  17. A - Linearization of the kernel functions in SVM (模拟)
  18. CSAPP:BombLab 详细解析
  19. js和ts两种 将 小写金额转中文大写汉字,阿拉伯数字金额格式化成中文大写汉字,数字金额转换成财务发票大写中文
  20. 【十大思想实验之一】电车难题

热门文章

  1. opencv调用海康威视摄像头
  2. C# 软件开发岗面试经验总结
  3. 西门子触摸屏数据历史数据记录_西门子触摸屏参数跟数据简单说明
  4. STL算法之 copy、copy_backward、copy_n
  5. 微信浏览器下载音频文件php,教你怎么下载公众号里面的音频文件
  6. 用贪心算法求解最小生成树
  7. Echarts实战案例代码(6):不设区的地级市行政区划3D工作进度五色图
  8. 案例:神经网络建模 + 可视化分析 = 提效增质的利器!
  9. Flutter-防京东商城项目-修改收货地址 删除收货地址-43
  10. ESP8266制作简单wifi风扇控制器