/********************************************************************* *文件说明: 专案主业务模块 *作者: logos *日期: 2016/10/19 *修改日志: 2016/10/19 logos 创建 2017/02/24 logos 修改 *PS: 可以在这里定义额外的接口供应用层调用 记得在def文件导出标准接口 脚本函数: int wlog(string keyword, int err, string errmsg, string msg); *Function: 记录日志 *Intput: keyword 日志类型、关键字 err 错误代码 无错误传0 errmsg 错误描述,有错误发生时才有效 msg 日志详细描述 *Output: NULL *Return: 成功返回0,失败返回错误代码<0 int vlog(string desc, string msg); *Function: 记录日志 *Intput: desc 日志描述 msg 日志详细信息 *Output: NULL *Return: 成功返回0,失败返回错误代码<0 2.1.12 update 1. 修改aab模式错误bug 2. 增加开始测试给治具发送命令,增加一个字段/T1/R1/R2 3. 修改视觉类,可一次拍照4个,接收4次消息即可WaitM1/WaitM2 ***********************************************************************/ #pragma once #ifndef DLL_INCLUDE_SDK_COREWORK_H #define DLL_INCLUDE_SDK_COREWORK_H #ifndef WINAPI #define WINAPI __stdcall #endif #ifndef EXPORT_C #define EXPORT_C extern "C" #endif #ifndef MAX_BUF_LEN #define MAX_BUF_LEN 256 #endif #ifndef MAX_NAME_LEN #define MAX_NAME_LEN 32 #endif #ifndef MAX_IP_LEN #define MAX_IP_LEN 16 #endif struct CoreConfig {//模块参数设置 char Config[MAX_NAME_LEN]; //配置? char ConfigD[MAX_NAME_LEN]; //配置? char lot[MAX_NAME_LEN]; //产品批次/料号 char machine[MAX_NAME_LEN]; //设备ID char sitel[MAX_NAME_LEN]; //厂商 char project[MAX_NAME_LEN]; //项目代码 char sublotname[MAX_NAME_LEN]; //子产品批次/料号 char BinA[MAX_NAME_LEN]; //BinA信息设定值 char serverip[MAX_IP_LEN]; //测试服务端IP地址 char visionip[MAX_IP_LEN]; //视觉服务端IP地址 int bNodeLog; //是否记录Breakdown日志 int testType; //测试模式 0 默认模式 1-AAB 2-ABC int bUpMes; //是否上传MES 治具用 int bUpMTcp; //是否打开MTCP 治具用 int bUpNoise; //是否上传噪音数据 int bSingleTestFilter; //是否开启单测试过滤 int bDirDate; //是否按日期生成文件夹 int bFourPic; //是否每次拍4个产品, 默认拍4个产品 int bSavePos; //是否缓存位置 默认缓存 int uphFrequency; //实时uph刷新频率 0-1min 1-2min 2-5min 3-6min 4-10min 5-20min int b2nd; //是否为二代机 int bTestlog; //是否打印测试通讯日志 int bVisionlog; //是否打印视觉通讯日志 int idualindex; //分组序号 A组 1~(3-6) int bPassTestB; //是否测试pass才进入B组测试 int bBindB; //B组是否为绑定模式 TC1->TCB1 TC2->TCB2 int iSimYield; //模拟测试良率 [0-100] 默认100 int iSimCT; //模拟测试CT 单位:秒 默认30s int bSimTest1; //模拟测试机台 int bSimTest2; int bSimTest3; int bSimTest4; int bSimTest5; int bSimTest6; }; enum TestStatus {//治具状态 TestNoConn = 0, //未连接 TestRunning, //测试中 TestIdle, //就绪 TestWarn, //治具报警 TestHoming, //治具回原 }; struct TestMachine {//测试治具 char ate[MAX_NAME_LEN]; //治具编码 int benable; //是否启用 1启用 0禁用 TestStatus status; //治具状态 int lastct; //最后一次CT int total; //测量总数 int pass; //pass总数 float yield; //良率 }; enum EMapPos {//产品处于什么位置? LocationVacm = 0, //吸嘴 LocationInput, //进料仓 LocationOk, //ok仓 LocationNg1, //NG1仓 LocationNg2, //NG2仓 LocationNg3, //NG3仓 LocationTest, //测试治具 }; struct TProduct {//产品数据 char sn[MAX_NAME_LEN]; //二维码 char lot[MAX_NAME_LEN]; //产品批次/料号 char ate1[MAX_NAME_LEN]; //治具编码1 char ate2[MAX_NAME_LEN]; //治具编码2 NG1次才有此编码 char ate3[MAX_NAME_LEN]; //治具编码3 NG2次才有此编码 char start[MAX_NAME_LEN]; //取料时间 YYYY/MM/DD HH:MM:SS char end[MAX_NAME_LEN]; //放料时间 YYYY/MM/DD HH:MM:SS char level[MAX_NAME_LEN]; //产品等级 -- 分bin使用 char failItems[MAX_BUF_LEN]; //测试不良项目 多项以;分割 int status; //最终状态 1pass 0ng EMapPos pos; //当前处于哪个位置 int index; //对应位置的序号 比如治具第几个?料盘上的第几个? int count; //测试了几次? int takeIndex; //取料时在料盘中的位置 }; //错误代码 enum CORE_ERR_CODE { ERR_NO_PRODUCT = -599, //无产品 ERR_EXIST_PRODUCT, //已经有产品存在 }; /* 定义一个函数指针类型, type:0 cam消息 1 测试软件消息 fromto:test_to_auto auto_to_test auto_to_cam cam_to_auto */ typedef void(__stdcall *CommunicationMsgCallback)(int souce,int index, char* msg,int dir); /**************************************************** *Function: 初始化 *Intput: NULL *Output: NULL *Return: 成功返回0,失败返回错误代码<0 ******************************************************/ EXPORT_C int WINAPI core_init(); /**************************************************** *Function: 释放模块资源 *Intput: NULL *Output: NULL *Return: 成功返回0,失败返回错误代码<0 ******************************************************/ EXPORT_C int WINAPI core_deinit(); /**************************************************** *Function: 获取版本号 *Intput: NULL *Output: NULL *Return: 返回当前版本号(4位整数) ******************************************************/ EXPORT_C int WINAPI core_version(); /**************************************************** *Function: 设置参数 *Intput: cfg 参数结构体 *Output: NULL *Return: 成功返回0,失败返回错误代码<0 ******************************************************/ EXPORT_C int WINAPI core_set_cfg(CoreConfig* cfg); /**************************************************** *Function: 获取参数 *Intput: cfg 参数结构体 *Output: NULL *Return: 成功返回0,失败返回错误代码<0 ******************************************************/ EXPORT_C int WINAPI core_get_cfg(CoreConfig* cfg); /**************************************************** *Function: 获取当前测试模式 -- 通过登录用户判定 *Intput: NULL *Output: NULL *Return: 返回测试模式 字符串 ******************************************************/ EXPORT_C const char* WINAPI get_test_model(); /**************************************************** *Function: 获取当前产品信息 *Intput: sn 二维码 pdata 缓冲区 *Output: NULL *Return: 成功返回0,失败返回错误代码<0 ******************************************************/ EXPORT_C int WINAPI get_product_info(const char* sn, TProduct* pdata); /**************************************************** *Function: 根据位置获取产品信息 *Intput: pos 料仓位置 EMapPos index 所在位置序号 pdata 缓冲区 *Output: NULL *Return: 有产品返回0,失败返回错误代码<0 *PS: pdata传入NULL可判断产品有无 ******************************************************/ EXPORT_C int WINAPI get_product_by_pos(EMapPos pos, int index, TProduct* pdata = 0); /**************************************************** *Function: 获取某个位置的产品列表 -- 进料仓时,sn为null *Intput: pos 料仓位置 EMapPos pdata 缓冲区 nsize 缓冲区大小 *Output: NULL *Return: 返回当前产品数量 *PS:可以先传NULL进去获取数量,然后申请内存再次获取 ******************************************************/ EXPORT_C int WINAPI get_product_list(EMapPos pos, TProduct* pdata = 0, int nsize = 0); /**************************************************** *Function: 获取当前所有产品信息 *Intput: pdata 缓冲区 nsize 缓冲区大小 *Output: NULL *Return: 返回当前产品数量 ******************************************************/ EXPORT_C int WINAPI get_all_product_info(TProduct* pdata = 0, int nsize = 0); /**************************************************** *Function: 启用/禁用一个治具 *Intput: index 治具编号 [1-6] benable 1启用 0禁用 *Output: NULL *Return: 成功返回0,失败返回错误代码<0 ******************************************************/ EXPORT_C int WINAPI test_enable(int index, int benable = 1); /**************************************************** *Function: 获取测试治具信息 *Intput: index 治具编号 [1-6] *Output: pdata 治具信息 *Return: 成功返回0,失败返回错误代码<0 ******************************************************/ EXPORT_C int WINAPI get_test_data(int index, TestMachine* pdata); /**************************************************** *Function: 调试一个测试治具 *Intput: index 治具编号 [1-6] sn 产品二维码 *Output: NULL *Return: 成功返回0,失败返回错误代码<0 *PS: 根据sn生产数据,并从1号吸嘴创建,并将数据移入治具,开始测试 ******************************************************/ EXPORT_C int WINAPI test_debug(int index, const char* sn); /**************************************************** *Function: 通知一个测试回原 *Intput: index 治具编号 [1-6] *Output: NULL *Return: 成功返回0,失败返回错误代码<0 ******************************************************/ EXPORT_C int WINAPI test_home(int index); /**************************************************** *Function: 通知一个测试复位 *Intput: index 治具编号 [1-6] *Output: NULL *Return: 成功返回0,失败返回错误代码<0 ******************************************************/ EXPORT_C int WINAPI test_reset(int index); /**************************************************** *Function: 测试Breakdown日志记录 -- 单步骤耗时日志 *Intput: pszt 日志标题 pszmsg 日志详细内容 *Output: NULL *Return: 成功返回0,失败返回错误代码<0 ******************************************************/ EXPORT_C int WINAPI vlog(const char* pszt, const char* pszmsg); /**************************************************** *Function: 记录日志 *Intput: keyword 操作模式 errcode 错误代码 0无效 errmsg errcode!=0时的错误描述 msg 日志内容 *Output: NULL *Return: 成功返回0,失败返回错误代码<0 ******************************************************/ EXPORT_C int WINAPI wlog(const char* keyword, int errcode, const char* errmsg, const char* msg); /**************************************************** *Function: 获取相机连接状态 *Intput: 相机序号 errcode 错误代码 0无效 errmsg errcode!=0时的错误描述 msg 日志内容 *Output: NULL *Return: 成功返回0,失败返回错误代码<0 ******************************************************/ EXPORT_C int WINAPI get_cam_status(); EXPORT_C int WINAPI get_test_status(); EXPORT_C int WINAPI registercallbackmsg(CommunicationMsgCallback vmsgCallback); #endif //防止重复包含