有些产测解决方案(ATE),在执行产测功能测试后可能还需要打印出标签。内容简单的标签可以由产测软件来完成,但如果涉及到复杂内容的标签打印,可以由产测软件调用MES的在线列印接口,让MES来完成标签的打印。
MES在线打印程序支持第三方的调用,调用过程很简单,是一个DLL形式封装的StdCall函数,提供VB, Delphi, C++, C#范例。 产测程序调用接口函数传给MES产品主条码后,MES会继续完成打印工作,并执行包括数据逻辑检查,模板监控,打印防呆和数据追溯等等MES功能。
const
DLLNAME3 = 'CloudMes_sdk_005.dll';
procedure mes_data_print(str:string);
function mes_ret:string;
implementation
procedure _mes_data(warn:pchar;len:integer);stdcall; external DLLNAME3 name 'mes_data';
procedure _mes_print;stdcall; external DLLNAME3 name 'mes_print';
procedure _mes_data_print(warn:pchar;len:integer);stdcall; external DLLNAME3 name 'mes_data_print';
procedure _mes_ret(warn:pchar;len:integer);stdcall; external DLLNAME3 name 'mes_ret';
procedure mes_data_print(str:string);
begin
_mes_data_print(pchar(Str),length(Str));
end;
function mes_ret:string;
var
buf:array[0..1000] of char;
begin
_mes_ret(buf,1000);
result:=string(buf);
end;procedure TForm1.Button1Click(Sender: TObject);
var
s:string;
i:integer;
begin
s:=formatdatetime('yyyymmddhhnnss',now);
mes_data_print(s); //
//
i:=20; s:=''; memo1.Lines.Clear;
while(i>0)do
begin
s:=mes_ret;
memo1.Lines.Add('=>'+s);
if(s<>'')then break;
sleep(100);
application.ProcessMessages ;
i:=i-1;
end;
end;Public Declare Sub mes_data_print Lib "CloudMes_sdk_005" (ByVal warn As String, ByVal slen As Integer) Public Declare Sub mes_ret Lib "CloudMes_sdk_005" (ByVal warn As String, ByVal slen As Integer) Public Sub mesprint(ByVal warn As String) Dim i As Integer i = LenB(warn) mes_data_print warn, i End Sub Public Function mesret() As String res$ = Space(1000) mes_ret res$, 1000 mesret = res End Function
Private Sub Command1_Click()
Dim s As String
Dim i As Integer
Dim tick As Single
s = Format(Now, "yyyyMMddHHnnss")
mesprint (s)
s = ""
i = 0
tick = Timer
While i < 10 And Len(s) < 5
s = Trim(mesret)
Sleep 200
DoEvents
i = i + 1
Wend
Me.Label1.Caption = i & "==>" & s & "<=="
End Sub#ifndef _MES_H_ #define _MES_H_ #define MESAPI _declspec(dllexport) MESAPI void mes_data_print(char* Sn, int slen); MESAPI void mes_ret(char* Sn, int slen); #endif
#include "StdAfx.h" #include "mes.h" #includeMESAPI void mes_data_print(char* Sn, int slen) { HINSTANCE hInst = LoadLibrary(L"CloudMes_sdk_005.dll"); if(!hInst) { return ; } typedef void (__stdcall *MESAPI_DATAPRINT)(char* Sn,int slen); MESAPI_DATAPRINT proc = (MESAPI_DATAPRINT)::GetProcAddress(hInst,"mes_data_print"); proc(Sn,slen); ::FreeLibrary(hInst); return; }; MESAPI void mes_ret(char* Sn, int slen) { HINSTANCE hInst = LoadLibrary(L"CloudMes_sdk_005.dll"); if(!hInst) { return ; } typedef void (__stdcall *MESAPI_RET)(char* Sn,int slen); MESAPI_RET proc = (MESAPI_RET)::GetProcAddress(hInst,"mes_ret"); proc(Sn,slen); ::FreeLibrary(hInst); return; };
int _tmain(int argc, _TCHAR* argv[])
{
char Sn[] = "1234567890";
printf_s("send: %s
",Sn);
mes_data_print(Sn,10);
getchar();
//
char* ret = new char[1000];
mes_ret(ret,1000);
printf_s("return: %s
",ret);
getchar();
return 0;
} public class MESCALL
{
[ DllImport ( "CloudMes_sdk_005" ) ]
public static extern void mes_data_print(string warn, int slen);
[ DllImport ( "CloudMes_sdk_005" ) ]
public static extern void mes_ret(StringBuilder warn, int slen);
public MESCALL()
{
}
} private void button1_Click(object sender, EventArgs e)
{
string s=DateTime.Now.ToString("yyyyMMddhhmmss");
MESCALL.mes_data_print(s, s.Length);
StringBuilder ret = new StringBuilder(255);
int i=10;
while (i > 0)
{
MESCALL.mes_ret(ret, 255);
if (ret.Length > 5) break;
Thread.Sleep(300);
i = i - 1;
}
this.label1.Text = ret.ToString();
}
扫一扫,联系我们 工作时间:周一至周五 9:00-18:00
联系人:徐女士
手机:18925205310
邮件:joyce@nagomes.cn
地址:深圳龙华区天汇大厦B栋207
