中文内容:
翻译内容:
  
MES系统功能清单(开源)
文档位置: www.nagomes.com/mesdoc/dcc.php?doc=A020
更新时间: 22-03-20 13:27    显示手机模式
文控编号: DCC-0002-0040-0005-0003

在线列印第三方调用接口介绍

Perfect design makes things easier! -- syant

有些产测解决方案(ATE),在执行产测功能测试后可能还需要打印出标签。内容简单的标签可以由产测软件来完成,但如果涉及到复杂内容的标签打印,可以由产测软件调用MES的在线列印接口,让MES来完成标签的打印。

MES在线打印程序支持第三方的调用,调用过程很简单,是一个DLL形式封装的StdCall函数,提供VB, Delphi, C++, C#范例。 产测程序调用接口函数传给MES产品主条码后,MES会继续完成打印工作,并执行包括数据逻辑检查,模板监控,打印防呆和数据追溯等等MES功能。



Delphi调用范例

第一步:引用DLL文件;
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;


VB调用范例

第一步:引用DLL文件;
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


C++调用范例

第一步:引用C++头文件;
#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

第二步:引用CPP文件;
#include "StdAfx.h"
#include "mes.h"
#include    

MESAPI 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; 
}


C#调用范例

第一步:引用DLL文件;
    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();
        }



  深圳全飞鸿科技 www.nagomes.com阅读3815次
关于我们:
      用软件定义企业 ,构建智能工厂!全飞鸿MES生产制造执行系统,助力智能制造。
      全飞鸿MES生产制造执行系统,历经十余年创新与优化,致力满足、服务于各大制造行业,为客户提供定制化的MES解决方案,并向客户完全开放系统源代码,无限提升客户系统软实力。

有疑问,请联系!
http://www.nagomes.com
syant@nagomes.com
深圳龙华雪岗北路308号凤天创新科技产业园