EQ一卡通2008类库

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

using System;
using System.Runtime.InteropServices;
using System.Windows.Forms;
using System.Drawing;
using System.Windows;
using System.Collections.Generic;
using System.Collections;
using System.IO;
using System.Drawing.Imaging;
using System.Text.RegularExpressions;

namespace Framework.Eq
{
using System;
using System.Runtime.InteropServices;

namespace Framework.Eq
{
///


/// 节目区域参数
///

[StructLayout(LayoutKind.Sequential)]
public struct User_PartInfo
{
public int iX; //窗口的起点X
public int iY; //窗口的起点Y
public int iWidth; //窗体的宽度
public int iHeight; //窗体的高度
public int iFrameMode; //边框的样式
public int FrameColor; //边框颜色
}

///
/// 字体参数
///

[StructLayout(LayoutKind.Sequential)]
public struct User_FontSet
{
public string strFontName; //字体的名称
public int iFontSize; //字体的大小
public bool bFontBold; //字体是否加粗
public bool bFontItaic; //字体是否是斜体
public bool bFontUnderline; //字体是否带下划线
public int colorFont; //字体的颜色
public int iAlignStyle; //左右对齐方式,0- 左对齐,1-居中,2-右对齐
public int iVAlignerStyle; //上下对齐方式,0-顶对齐,1-上下居中,2-底对齐
public int iRowSpace; //行间距
}

///
/// 动画方式参数
///

[StructLayout(LayoutKind.Sequential)]
public struct User_MoveSet
{
public int iActionType; //节目变换方式
public int iActionSpeed; //节目的播放速度
public bool bClear; //是否需要清除背景
public int iHoldTime; //在屏幕上停留的时间
public int iClearSpeed; //清除显示屏的速度
public int iClearActionType; //节目清除的变换方式
public int iFrameTime; //每帧时间
}

///
/// 日期时间区参数
///

[StructLayout(LayoutKind.Sequential)]
public struct User_DateTime
{
public User_PartInfo PartInfo; //分区信息
public int BkColor; //背景颜色
public User_FontSet FontInfo; //字体设置
public int iDisplayType; //显示风格 0-"3/10/2006 星期六10:20:30",1-"2006-03-10星期六10:20:30",2-"2006年3月10日 星期六10点20分30秒"
public string chTitle; //添加显示文字
public bool bYearDisType; //年份位数0-4,1-2位

public bool bMulOrSingleLine; //单行还是多行,0-单行1-多行
public bool bYear; //是否显示年
public bool bMouth; //是否显示月
public bool bDay; //是否显示天
public bool bWeek; //是否显示星期
public bool bHour; //是否显示小时
public bool bMin; //是否显示分钟
public bool bSec; //是否显示秒
}

///


/// 单行文本区参数
///

[StructLayout(LayoutKind.Sequential)]
public struct User_SingleText
{
public string chContent; //显示内容
public User_PartInfo PartInfo; //分区信息
public int BkColor; //背景颜色
public User_FontSet FontInfo; //字体设置
public User_MoveSet MoveSet; //动作方式设置
}

///
/// 文本区参数
///

[StructLayout(LayoutKind.Sequential)]
public struct User_Text
{
public string chContent; //显示内容
public User_PartInfo PartInfo; //分区信息
public int BkColor; //背景颜色
public User_FontSet FontInfo; //字体设置
public User_MoveSet MoveSet; //动作方式设置
}

///
/// 计时区参数
///

[StructLayout(LayoutKind.Sequential)]
public struct User_Timer
{
public User_PartInfo PartInfo; //分区信息
public int BkColor; //背景颜色
public User_FontSet FontInfo; //字体设置
public int ReachTimeYear; //到达年
public int ReachTimeMonth; //到达月
public int ReachTimeDay; //到达日
public int ReachTimeHour; //到达时
public int ReachTimeMinute; //到达分
public int ReachTimeSecond; //到达秒
public bool bDay; //是否显示天 0-不显示 1-显示
public bool bHour; //是否显示小时
public bool bMin; //是否显示分钟
public bool bSec; //是否显示秒
public bool bMulOrSingleLine; //单行还是多行
public string chTitle; //添加显示文字
}

///
/// 温度区参数
///

[StructLayout(LayoutKind.Sequential)]
public struct User_Temperature
{
public User_PartInfo PartInfo; //分区信息
public int BkColor; //背景颜色
public User_FontSet FontInfo; //字体设置
public string chTitle; //标题
public int DisplayType; //显示格式:0-度 1-C
}

///
/// 图文区参数
///

[StructLayout(LayoutKind.Sequential)]
public struct User_Bmp
{
public Use

r_PartInfo PartInfo; //分区信息
}

///


/// RTF文件区参数
///

[StructLayout(LayoutKind.Sequential)]
public struct User_RTF
{
public string strFileName; //RTF文件名
public User_PartInfo PartInfo; //分区信息
public User_MoveSet MoveSet; //动作方式设置
}
}

public class LedHelper
{
#region 程序集EQ2008_Dll.dll相关方法
//添加节目
[DllImport("EQ2008_Dll.dll", CharSet = CharSet.Ansi)]
public static extern int User_AddProgram(int CardNum, Boolean bWaitToEnd, int iPlayTime);

//添加文本区
[DllImport("EQ2008_Dll.dll", CharSet = CharSet.Ansi)]
public static extern int User_AddText(int CardNum, ref User_Text pText, int iProgramIndex);

//添加时间区
[DllImport("EQ2008_Dll.dll", CharSet = CharSet.Ansi)]
public static extern int User_AddTime(int CardNum, ref User_DateTime pdateTime, int iProgramIndex);

//添加图文区
[DllImport("EQ2008_Dll.dll", CharSet = CharSet.Ansi)]
public static extern int User_AddBmpZone(int CardNum, ref User_Bmp pBmp, int iProgramIndex);

//指定图像路径添加图片
[DllImport("EQ2008_Dll.dll", CharSet = CharSet.Ansi)]
public static extern bool User_AddBmpFile(int CardNum, int iBmpPartNum, string strFileName, ref User_MoveSet pMoveSet, int iProgramIndex);

//指定图像句柄添加图片
[DllImport("EQ2008_Dll.dll", CharSet = CharSet.Ansi)]
public static extern bool User_AddBmp(int CardNum, int iBmpPartNum, IntPtr hBitmap, ref User_MoveSet pMoveSet, int iProgramIndex);

//删除所有节目
[DllImport("EQ2008_Dll.dll", CharSet = CharSet.Ansi)]
public static extern Boolean User_DelAllProgram(int CardNum);

//删除特定节目
[DllImport("EQ2008_Dll.dll", CharSet = CharSet.Ansi)]
public static extern Boolean User_DelProgram(int CardNum, int iProgramIndex);

//建立连接
[DllImport("EQ2008_Dll.dll", CharSet = CharSet.Ansi)]
public static extern Boolean User_RealtimeConnect(int CardNum);

//实时发送数据 IntPtr
[DllImport("EQ2008_Dll.dll", CharSet = CharSet.Ansi)]
public static extern Boolean User_RealtimeSendData(int CardNum, int x, int y, int iWidth, int iHeight, IntPtr hBitmap);

[DllImport("EQ2008_Dll.dll", CharSet = CharSet.Ansi)]
public static extern Boolean User_RealtimeSendBmpData(int CardNum, int x, int y, int iWidth, int iHeight,string strFileName);

//断开连接
[DllImport("EQ2008_Dll.dll", CharSet = CharSet.Ansi)]
public static extern Boolean User_RealtimeDisConnect(int CardNum);


//发送数据
[DllImport("EQ2008_Dll.dll", CharSet = CharSet.Ansi)]
public static extern Boolean User_SendToScreen(int CardNum);

//校正板卡时间
[DllImp

ort("EQ2008_Dll.dll", CharSet = CharSet.Ansi)]
public static extern Boolean User_AdjustTime(int CardNum);

//开机
[DllImport("EQ2008_Dll.dll", CharSet = CharSet.Ansi)]
public static extern Boolean User_OpenScreen(int CardNum);

//关机
[DllImport("EQ2008_Dll.dll", CharSet = CharSet.Ansi)]
public static extern Boolean User_CloseScreen(int CardNum);

//控制卡及已经添加的节目
public static Dictionary> dicLedCard = new Dictionary>();
#endregion

#region 单列
private LedHelper()
{

}

private static volatile LedHelper _instance;
private static readonly object Padlock = new object();

public static LedHelper GetInstance()
{
if (_instance == null)
lock (Padlock)
{
if (_instance == null)
{
_instance = new LedHelper();
}
}
return _instance;
}
#endregion

#region LED参数设置
///


/// 字体设置
///

public User_FontSet SetLedFont(bool b,bool i,bool u,int color,int size,string name,int align,int alignV)
{
User_FontSet font = new User_FontSet();
font.bFontBold = b;
font.bFontItaic = i;
font.bFontUnderline = u;
font.colorFont = color;
font.iFontSize = size;
font.strFontName = name;
font.iAlignStyle = align;
font.iVAlignerStyle = alignV;
font.iRowSpace = 0;
return font;
}

///
/// 设置Led区域
///

public User_PartInfo SetLedPart(int x,int y,int w,int h)
{
User_PartInfo part = new User_PartInfo();
part.FrameColor = 0;
part.iFrameMode = 0;
part.iHeight = h;
part.iWidth = w;
part.iX = x;
part.iY = y;
return part;
}

///
/// 设置Led动画
///

public User_MoveSet SetLedMove(int type, int speed, int hold, int clearType, bool bClear)
{
User_MoveSet move = new User_MoveSet();
move.bClear = bClear;
move.iActionSpeed = speed;
move.iActionType = type;
move.iHoldTime = hold;
move.iClearActionType = clearType;
move.iClearSpeed = 4;
move.iFrameTime = hold+20;
return move;
}

///
/// 设置时间
///

public User_DateTime SetLedDate(User_PartInfo part, User_FontSet font)
{
User_DateTime DateTime = new User_DateTime();

DateTime.bDay = true;
DateTime.bHour =false;
Dat

eTime.BkColor = 0;
DateTime.bMin = false;
DateTime.bMouth = true;
DateTime.bMulOrSingleLine = false;
DateTime.bSec = false;
DateTime.bWeek = false;
DateTime.bYear = true;
DateTime.bYearDisType =true;
DateTime.chTitle = "";
DateTime.iDisplayType = 1;
DateTime.PartInfo = part;
DateTime.FontInfo = font;
return DateTime;
}

///


/// 设置温度
///

public User_Temperature SetLedTemperature(User_PartInfo part,User_FontSet font)
{
User_Temperature Temperature = new User_Temperature();

Temperature.BkColor = 0;
Temperature.chTitle = "";
Temperature.DisplayType = 0;
Temperature.PartInfo = part;
Temperature.FontInfo = font;
return Temperature;
}

///
/// 设置文本内容
///

public User_Text SetContent(User_PartInfo part, User_FontSet font,User_MoveSet move,string content)
{
User_Text text = new User_Text();
text.PartInfo = part;
text.MoveSet = move;
text.FontInfo = font;
text.chContent = content;
return text;
}

///
/// 设置图片
///

public User_Bmp SetBmpZone(User_PartInfo part,User_MoveSet move)
{
User_Bmp bmpZone = new User_Bmp();
bmpZone.PartInfo.FrameColor = 0xFF00;
bmpZone.PartInfo.iFrameMode = 1;
bmpZone.PartInfo = part;
return bmpZone;
}
#endregion

#region LED操作

///
/// 打开LED屏
///

public string OpenLedScreen(int g_iCardNum)
{
if (User_OpenScreen(g_iCardNum) == false)
{
return g_iCardNum+ "号屏打开失败";
}
else
{
return g_iCardNum + "号屏打开成功";
}
}

///
/// 关闭LED屏
///

public string CloseLedScreen(int g_iCardNum)
{
if (User_CloseScreen(g_iCardNum) == false)
{
return g_iCardNum + "号屏关闭失败";
}
else
{
return g_iCardNum + "号屏关闭成功";
}
}

///
/// 添加节目
///

public string AddProgram(int g_iCardNum, out int g_iProgramIndex)
{
g_iProgramIndex = -1;
try
{
g_iProgramIndex = User_AddProgram(g_iCardNum, false, 10);
return g_iCardNum+"号屏增加节目成功";
}

catch (Exception ex)
{
return g_iCardNum + "号屏增加节目失败"+ex.Message;
}
}

///


/// 删除LED屏所有节目
///

public string DelProgram(int g_iCardNum)
{
if (User_DelAllProgram(g_iCardNum) == false)
{
return g_iCardNum + "删除节目失败";
}
else
{
//提示信息
return g_iCardNum + "删除节目成功";
}
}

///
/// 删除特定节目
///

public string DelOneProgram(int g_iCardNum, int g_iProgramIndex)
{
if (User_DelProgram(g_iCardNum,g_iProgramIndex) == false)
{
return g_iCardNum + "屏删除节目"+g_iProgramIndex+"失败";
}
else
{
//提示信息
return g_iCardNum + "删除节目"+g_iProgramIndex+"成功";
}
}

///
/// 添加文本内容
///

public string AddContent(User_Text strContent, int g_iCardNum, int g_iProgramIndex)
{
try
{
if (-1 == User_AddText(g_iCardNum, ref strContent, g_iProgramIndex))
{
return g_iCardNum + "号屏节目" + g_iProgramIndex + "添加文本失败";
}
else
{
return g_iCardNum + "号屏节目" + g_iProgramIndex + "添加文本成功";
}
}
catch (Exception ex)
{
return g_iCardNum + "号屏节目" + g_iProgramIndex + "添加文本异常"+ex.ToString();
}
}

///
/// 添加时间
///

public string AddLedDate(User_DateTime ledDate, int g_iCardNum, int g_iProgramIndex)
{
if (-1 == User_AddTime(g_iCardNum, ref ledDate, g_iProgramIndex))
{
return g_iCardNum + "号屏节目" + g_iProgramIndex + "添加时间失败";

}
else
{
return g_iCardNum + "号屏节目" + g_iProgramIndex + "添加时间成功";
}
}

///
/// 添加图片区
///

public int AddBmpZone(User_Bmp bmpZone, int g_iCardNum, int g_iProgramIndex)
{
return User_AddBmpZone(g_iCardNum, ref bmpZone, g_iProgramIndex);
}

///
/// 添加图片从文件
///

public bool AddBmpFrom(int g_iCardNum, int g_iProgramIndex,int bmpZoneNum,User_MoveSet moveSet,string bmpPath)
{
return User_AddBmpFile(g_iCardNum, b

mpZoneNum, bmpPath, ref moveSet, g_iProgramIndex);
}

///


/// 添加图片从句柄
///

public bool AddBmpIntprt(int g_iCardNum, int g_iProgramIndex, int bmpZoneNum, User_MoveSet moveSet,User_Bmp bmpZone,Image img)
{
Bitmap bmp = new Bitmap(img, bmpZone.PartInfo.iWidth, bmpZone.PartInfo.iHeight);

if (false == User_AddBmp(g_iCardNum, bmpZoneNum, bmp.GetHbitmap(), ref moveSet, g_iProgramIndex))
{
bmp.Dispose();
return false;
}
else
{
bmp.Dispose();
return true;
}

}

///
/// 发送数据
///

public string SendDataToLed(int g_iCardNum)
{
if (User_SendToScreen(g_iCardNum) == false)
{
return g_iCardNum + "号屏" +"发送数据失败";
}
else
{
return g_iCardNum + "号屏" + "发送数据成功";
}
}

///
/// 校正时间
///

public string AdjustLedTime(int g_iCardNum)
{
if (User_AdjustTime(g_iCardNum) == false)
{
return g_iCardNum + "号屏" + "校准时间失败";
}
else
{
return g_iCardNum + "号屏" + "校准时间成功";
}
}

///
/// 时时连接
///

public bool RealtimeConnect(int g_iCardNum)
{
bool isConn = false;
isConn= User_RealtimeConnect(g_iCardNum);
return isConn;
}

///
/// 时时发送
///

public bool RealtimeSendData(int g_iCardNum, User_PartInfo part, User_FontSet font, string content)
{
try
{
bool isSend= false;
Bitmap bmp = this.DrawBmpStr(part, font, content);//LedResource.led1;
isSend = User_RealtimeSendData(g_iCardNum, part.iX, part.iY, part.iWidth, part.iHeight, bmp.GetHbitmap());
bmp.Dispose();
return isSend;
}
catch (Exception ex)
{
this.RealtimeDisconnect(g_iCardNum);
Log.LogHelper.RecLog(AppDomain.CurrentDomain.BaseDirectory + "Logs\\" + DateTime.Now.ToString("yyyy-MM-dd") + ".txt", "RealtimeSendData" + ex.ToString());
return false;
}
}

public bool RealtimeSendBmpData(int g_iCardNum, int x,int y,int w,int h, string filePaht)
{
bool isSend = false;
isSend= User_RealtimeSendBmpData(g_iCardNum, x,y,w,h,filePaht);
return isSend;
}

///
/// 时时断开
///

>
public bool RealtimeDisconnect(int g_iCardNum)
{
bool isDicConn = false;
isDicConn=User_RealtimeDisConnect(g_iCardNum);
return isDicConn;
}
#endregion

#region 自定义方法

// 判断是否为汉字
public bool IsChineseCharacters(string chrStr)
{
Regex CheckStr = new Regex("[\u4e00-\u9fa5]+");
return CheckStr.IsMatch(chrStr);
}

//判断大写
public bool IsBigChar(string value)
{
string pattern = @"[A-Z]+$";
return Regex.IsMatch(value, pattern);
}


public String ToSBC(String input)
{
// 半角转全角:
char[] c = input.ToCharArray();
for (int i = 0; i < c.Length; i++)
{
if (c[i] == 32)
{
c[i] = (char)12288;
continue;
}
if (c[i] < 127)
c[i] = (char)(c[i] + 65248);
}
return new String(c);
}

public static String ToDBC(String input)
{
char[] c = input.ToCharArray();
for (int i = 0; i < c.Length; i++)
{
if (c[i] == 12288)
{
c[i] = (char)32;
continue;
}
if (c[i] > 65280 && c[i] < 65375)
c[i] = (char)(c[i] - 65248);
}
return new String(c);
}

//大小写字符判断方式
public string FormatStr(string LedContent, int count,int row)
{

try
{
if (string.IsNullOrEmpty(LedContent)) return "无";
if (count >= LedContent.Length)
return LedContent;

List lst = new List();
int idx = 0;//2个半算一个全
string rltChar = string.Empty;
int currCount = count;
for (int i = 0; i <= LedContent.Length; i++)
{
if (i == LedContent.Length)
{
lst.Add(rltChar);
break;
}
if (idx == 1 || rltChar.Length < currCount)
{
string currChar = LedContent.Substring(i, 1);
rltChar += currChar;
if (!IsChineseCharacters(currChar) && !IsBigChar(currChar))
idx++;
if (idx == 2)
{
currCount++;
idx = 0;
}
}
else
{
lst.Add(rltChar);
i--;
idx = 0;
currCount = count;
rltChar = string.Em

pty;
}

}
rltChar = string.Empty;
int needRow = 0;
if (row < lst.Count)
needRow = row;
if (row > lst.Count)
needRow = lst.Count;
if (row == lst.Count)
needRow = row;
for (int i = 0; i < needRow - 1; i++)
rltChar += lst[i] + "\r\n";
return rltChar + lst[needRow - 1];
}
catch (Exception ex)
{
return "E";
}
}


//根据文字信息生成图文
public Bitmap DrawBmpStr(User_PartInfo part, User_FontSet font, string content)
{
content = this.FormatStr(content.Trim(), part.iWidth/16, part.iHeight/16);
Bitmap bmp = new Bitmap(part.iWidth, part.iHeight);

for (int Xcount = 0; Xcount < bmp.Width; Xcount++)
{
for (int Ycount = 0; Ycount < bmp.Height; Ycount++)
{
bmp.SetPixel(Xcount, Ycount, Color.Black);
}
}

Graphics g = Graphics.FromImage(bmp);

Font f = new Font(font.strFontName, font.iFontSize);
Color fc = new Color();
if (font.colorFont == 0xFFFF)
fc = Color.Yellow;
if (font.colorFont == 0xFF00)
fc = wnGreen;
if (font.colorFont == 0x00FF)
fc = Color.Red;
SolidBrush sbrush = new SolidBrush(fc);

g.DrawString(content, f, sbrush, new PointF(0, 0));
g.Dispose();
MemoryStream ms = new MemoryStream();
bmp.Save(ms, System.Drawing.Imaging.ImageFormat.Bmp);
ms.Dispose();
return bmp;

}
#endregion
}
}

相关文档
最新文档