You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

307 lines
10 KiB
C

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

/*********************************************************************
*文件说明: 专案主业务模块
*作者: 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; //取料时在料盘中的位置
};
typedef void(*callback) (int mode, char* content);
//错误代码
enum CORE_ERR_CODE
{
ERR_NO_PRODUCT = -599, //无产品
ERR_EXIST_PRODUCT, //已经有产品存在
};
/****************************************************
*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);
EXPORT_C int WINAPI regist_callback(callback fun);
#endif //防止重复包含