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

248 lines
10 KiB

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Drawing.Drawing2D;
using System.IO;
using System.Runtime.InteropServices;
namespace SiaSun.LMS.LED
{
public class BX_5M_2 : BX_5M_Base
{
#region 定义委托
public delegate void CallBack(string szMessagge, int nProgress);
public CallBack callBack;
#endregion
#region 引用dll方法
//初始化动态库
[DllImport("BX_IV_2.dll")]
public static extern int Initialize();
//释放动态库
[DllImport("BX_IV_2.dll")]
public static extern int Uninitialize();
//向动态库中添加显示屏信息;该函数不与显示屏通讯,只用于动态库中的指定显示屏参数信息配置。
[DllImport("BX_IV_2.dll")]
public static extern int AddScreen(int nControlType, int nScreenNo, int nSendMode,
int nWidth, int nHeight, int nScreenType, int nPixelMode, int nDataDA,
int nDataOE, int nRowOrder, int nFreqPar, string pCom, int nBaud,
string pSocketIP, int nSocketPort, int nServerMode, string pBarcode, string pNetworkID,
string pServerIP, int nServerPort, string pServerAccessUser, string pServerAccessPassword,
string pWiFiIP, int nWiFiPort, string pGprsIP, int nGprsPort, string pGprsID, string pScreenStatusFile, CallBack pCallBack);
//向动态库中指定显示屏添加节目;该函数不与显示屏通讯,只用于动态库中的指定显示屏节目信息配置。
[DllImport("BX_IV_2.dll")]
public static extern int AddScreenProgram(int nScreenNo, int nProgramType, int nPlayLength,
int nStartYear, int nStartMonth, int nStartDay, int nEndYear, int nEndMonth, int nEndDay,
int nMonPlay, int nTuesPlay, int nWedPlay, int nThursPlay, int bFriPlay, int nSatPlay, int nSunPlay,
int nStartHour, int nStartMinute, int nEndHour, int nEndMinute); //向指定显示屏添加节目;
//向动态库中指定显示屏的指定节目添加图文区域;该函数不与显示屏通讯,只用于动态库中的指定显示屏指定节目中的图文区域信息配置。
[DllImport("BX_IV_2.dll")]
public static extern int AddScreenProgramBmpTextArea(int nScreenNo, int nProgramOrd, int nX, int nY,
int nWidth, int nHeight);
/*
*/
[DllImport("BX_IV_2.dll")]
public static extern int AddScreenProgramAreaBmpTextFile(int nScreenNo, int nProgramOrd, int nAreaOrd,
string pFileName, int nShowSingle, string pFontName, int nFontSize, int nBold, int nFontColor,
int nStunt, int nRunSpeed, int nShowTime); //向指定显示屏指定节目指定区域添加文件
/*
*/
[DllImport("BX_IV_2.dll")]
public static extern int AddScreenProgramAreaBmpTextText(int nScreenNo, int nProgramOrd, int nAreaOrd,
string pText, int nShowSingle, string pFontName, int nFontSize, int nBold, int nFontColor,
int nStunt, int nRunSpeed, int nShowTime);
//通过指定的通讯模式,发送相应信息、命令到显示屏。该函数与显示屏进行通讯
[DllImport("BX_IV_2.dll")]
public static extern int SendScreenInfo(int nScreenNo, int nSendCmd, int nOtherParam1);//发送相应命令到显示屏。
//删除指定显示屏信息,删除显示屏成功后会将该显示屏下所有节目信息从动态库中删除。
//该函数不与显示屏通讯,只用于动态库中的指定显示屏参数信息配置。
[DllImport("BX_IV_2.dll")]
public static extern int DeleteScreen(int nScreenNo);
#endregion
//显示通讯记录
public override bool GetErrorMessage(string FUNCTION_NAME, int RETURN_ERROR, out string sResult)
{
bool bResult = true;
sResult = SiaSun.LMS.Common.StringUtil.GetCurDateTimeString() + "---执行函数:" + FUNCTION_NAME + "---返回结果:";
if (RETURN_ERROR == RETURN_NOERROR)
{
sResult += "函数执行成功/通讯成功";
return bResult;
}
else
{
bResult = false;
}
switch (RETURN_ERROR)
{
case RETURN_ERROR_AERETYPE:
sResult += "区域类型错误,在添加、删除图文区域文件时区域类型出错返回此类型错误";
break;
case RETURN_ERROR_RA_SCREENNO:
sResult += "已经有该显示屏信息,如要重新设定请先DeleteScreen删除该显示屏再添加";
break;
case RETURN_ERROR_NOFIND_AREAFILE:
sResult += "没有找到有效的区域文件(图文区域)";
break;
case RETURN_ERROR_NOFIND_AREA:
sResult += "没有找到有效的显示区域可以使用AddScreenProgramBmpTextArea添加区域信息";
break;
case RETURN_ERROR_NOFIND_PROGRAM:
sResult += "没有找到有效的显示屏节目可以使用AddScreenProgram函数添加指定节目";
break;
case RETURN_ERROR_NOFIND_SCREENNO:
sResult += "系统内没有查找到该显示屏可以使用AddScreen函数添加显示屏";
break;
case RETURN_ERROR_NOW_SENDING:
sResult += "系统内正在向该显示屏通讯,请稍后再通讯";
break;
case RETURN_ERROR_OTHER:
sResult += "其它错误";
break;
case 0x01:
case 0x02:
case 0x03:
case 0x04:
case 0x05:
case 0x06:
case 0x07:
case 0x08:
case 0x09:
case 0x0A:
case 0x0B:
case 0x0C:
case 0x0D:
case 0x0E:
case 0x0F:
case 0x10:
case 0x11:
case 0x12:
case 0x13:
case 0x14:
case 0x15:
case 0x16:
case 0x17:
case 0x18:
case 0xFE:
sResult += "通讯错误";
break;
default:
sResult += "未定义错误";
break;
}
return bResult;
}
//初始化动态库资源
public override int InitializeLED()
{
return Initialize();
}
//释放动态库
public override int UninitializeLED()
{
return Uninitialize();
}
//添加屏幕
public override int AddScreen(int CONTROL_TYPE, int SCREEN_WIDTH, int SCREEN_HEIGHT, string LED_IP)
{
int result = AddScreen(CONTROL_TYPE,
SCREEN_NO, SEND_MODE_NET,
SCREEN_WIDTH,
SCREEN_HEIGHT,
SCREEN_TYPE, PIXEL_MODE, SCREEN_DATADA, SCREEN_DATAOE,
SCREEN_ROWORDER, SCREEN_FREQPAR, SCREEN_COMM, SCREEN_BAUD,
LED_IP,
SCREEN_SOCKETPORT, SERVER_MODE, BAR_CODE, NET_WORKID,
SERVER_IP, SERVER_PORT, SERVER_ACCESS_USER, SERVER_ACCESS_PASSWORD,
WIFI_IP, WIFI_PORT, GPRS_IP, GPRS_PORT, GPRS_ID, SCREEN_STATUS_FILE, callBack);
return result;
}
//添加节目
public override int AddScreenProgram()
{
return AddScreenProgram(SCREEN_NO, 0, 0, 65535, 11, 26, 2011, 11, 26, 1, 1, 1, 1, 1, 1, 1, 0, 0, 23, 59);
}
//添加图文区
public override int AddScreenProgramBmpTextArea(int AREA_X, int AREA_Y, int AREA_WIDTH, int AREA_HEIGHT)
{
return AddScreenProgramBmpTextArea(SCREEN_NO,
0, //ProgramOrd
AREA_X,
AREA_Y,
AREA_WIDTH,
AREA_HEIGHT);
}
//添加文件到图文区
//FILE_NAME需要写出根目录,如AppDomain.CurrentDomain.BaseDirectory+"@Files\192.168.100.31.txt"
public override int AddScreenProgramAreaBmpTextFile(int AREA_ORDER, string FILE_NAME, int FONT_SIZE, int SHOW_STUNT, int RUN_SPEED, int SHOW_TIME)
{
return AddScreenProgramAreaBmpTextFile(SCREEN_NO,
0, //ProgramOrd
AREA_ORDER,
FILE_NAME,
1, //nShowSingle
"宋体",
FONT_SIZE,
0, //nBold
255, //nFontColor
SHOW_STUNT,
RUN_SPEED,
SHOW_TIME);
}
//发送数据
public override int SendScreenInfo()
{
return SendScreenInfo(SCREEN_NO, SEND_CMD_SENDALLPROGRAM, 0);
}
//强制关机
public override int PowerOffScreen()
{
return SendScreenInfo(SCREEN_NO, SEND_CMD_POWEROFF, 0);
}
//强制开机
public override int PowerOnScreen()
{
return SendScreenInfo(SCREEN_NO, SEND_CMD_POWERON, 0);
}
//删除显示屏幕
public override int DeleteScreen()
{
return DeleteScreen(SCREEN_NO);
}
}
}