今天给大家解答一下大家长期的疑问,大家想知道SECS/GEM如何实现自定义消息
2025年越南半导体爆发,大量的国内设备厂商售卖设备过去。
由于生产的半导体产品不一样,现场是出现少量的自定义消息,采用金南瓜SECS/GEM成熟的方案,用户只需少量时间,按照例程抄到自己代码里面,简简单单就实现自定义消息了。
如果开发者用过SECS/GEM,按照格式只需使用到 listElement、listSplit俩条函数就能实现对所有SML解析和提取数据。
C++和C#、Labview等开发语言都是一样的做法
下面就提供一下现场的代码截图

cpp
// 处理越南现场S3F103
void OnS3F103Message(IMCHandle *, int64 stream, int64 function, bool send_reply,
int64 transactionID, const char* TSN_data, const char* header, void *clientData)
{
CSecsEquip* pSH = (CSecsEquip*)clientData;
CLabviewSecsCallback* pHV = (CLabviewSecsCallback* )pSH->GetClientData();
// 记录log
string pLog = "收到S3F103数据,数据:";
pLog += TSN_data;
pHV->SaveLog(pLog);
// 处理
vector<string> listData;
listSplit(TSN_data, listData);
if (listData.size() == 4)
{
pHV->SaveLog("解析S3F103数据没有问题,带的数据数量3个");
string pEQPID = listData[1];
string pSUBEQPID = listData[2];
string pINFO = listData[3];
pSUBEQPID = listElement(pSUBEQPID, 1);
pINFO = listElement(pINFO, 1);
string pLotID = listElement(pINFO, 1, 1, 1);
string pJobCommand = listElement(pINFO, 2, 1, 1);
// 添加远程命令
S3F103Data pS3F103Data;
pS3F103Data.pSUBEQPID = pSUBEQPID;
pS3F103Data.pLotID = pLotID;
pS3F103Data.pJobCommand = pJobCommand;
}
}