LedDll.cs 46 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. using System.Runtime.InteropServices;
  7. namespace MeterPlugInLibrary
  8. {
  9. public class LedDll
  10. {
  11. public const int COLOR_RED = 0xff; //红色
  12. public const int COLOR_GREEN = 0xff00; //绿色
  13. public const int COLOR_YELLOW = 0xffff; //黄色
  14. public const int ADDTYPE_STRING = 0; //添加类型为字符串
  15. public const int ADDTYPE_FILE = 1; //添加类型为文件
  16. public const int OK = 0;//函数返回成功
  17. //******节目定时启用日期时间星期的标志宏***************************************************************************
  18. public const int ENABLE_DATE = 0x01;
  19. public const int ENABLE_TIME = 0x02;
  20. public const int ENABLE_WEEK = 0x04;
  21. //*****************************************************************************************************************
  22. //******节目定时星期里某天启用宏***********************************************************
  23. public const int WEEK_MON = 0x01;
  24. public const int WEEK_TUES = 0x02;
  25. public const int WEEK_WEN = 0x04;
  26. public const int WEEK_THUR = 0x08;
  27. public const int WEEK_FRI = 0x10;
  28. public const int WEEK_SAT = 0x20;
  29. public const int WEEK_SUN = 0x40;
  30. //*****************************************************************************
  31. //[StructLayout(LayoutKind.Sequential, Size = 8, CharSet = CharSet.Unicode, Pack = 1)]
  32. //**通讯设置结构体*********************************************************
  33. [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
  34. public struct COMMUNICATIONINFO
  35. {
  36. public int LEDType; //LED类型 0.为所有6代单色、双色、七彩卡, 1.为所有6代全彩卡
  37. public int SendType; //通讯方式 0.为Tcp发送(又称固定IP通讯), 1.广播发送(又称单机直连) 2.串口通讯 3.磁盘保存
  38. [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
  39. public string IpStr; //LED屏的IP地址,只有通讯方式为0时才需赋值,其它通讯方式无需赋值
  40. public int Commport; //串口号,只有通讯方式为2时才需赋值,其它通讯方式无需赋值
  41. public int Baud; //波特率,只有通讯方式为2时才需赋值,其它通讯方式无需赋值, 0.9600 1.57600 2.115200 直接赋值 9600,19200,38400,57600,115200亦可
  42. public int LedNumber; //LED的屏号,只有通讯方式为2时,且用485通讯时才需赋值,其它通讯方式无需赋值
  43. [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)]
  44. public string OutputDir; //磁盘保存的目录,只有通讯方式为3时才需赋值,其它通讯方式无需赋值
  45. };
  46. //***********************************************************************
  47. //**区域坐标结构体*********************************************************
  48. public struct AREARECT
  49. {
  50. public int left; //区域左上角横坐标
  51. public int top; //区域左上角纵坐标
  52. public int width; //区域的宽度
  53. public int height; //区域的高度
  54. };
  55. //****************************************************************************
  56. //***字体属性结构对**********************************************************
  57. [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
  58. public struct FONTPROP
  59. {
  60. [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
  61. public string FontName; //字体名
  62. public int FontSize; //字号(单位磅)
  63. public int FontColor; //字体颜色
  64. public int FontBold; //是否加粗
  65. public int FontItalic; //是否斜体
  66. public int FontUnderLine; //时否下划线
  67. };
  68. //****************************************************************************
  69. //**页面显示的属性结构体****************************************************
  70. public struct PLAYPROP
  71. {
  72. public int InStyle; //入场特技值(取值范围 0-38)
  73. public int OutStyle; //退场特技值(现无效,预留,置0)
  74. public int Speed; //特技显示速度(取值范围1-255)
  75. public int DelayTime; //页面留停时间(1-65535)
  76. };
  77. /* 特技值对应
  78. 0=立即显示
  79. 1=随机
  80. 2=左移
  81. 3=右移
  82. 4=上移
  83. 5=下移
  84. 6=连续左移
  85. 7=连续右移
  86. 8=连续上移
  87. 9=连续下移
  88. 10=闪烁
  89. 11=激光字(向上)
  90. 12=激光字(向下)
  91. 13=激光字(向左)
  92. 14=激光字(向右)
  93. 15=水平交叉拉幕
  94. 16=上下交叉拉幕
  95. 17=左右切入
  96. 18=上下切入
  97. 19=左覆盖
  98. 20=右覆盖
  99. 21=上覆盖
  100. 22=下覆盖
  101. 23=水平百叶(左右)
  102. 24=水平百叶(右左)
  103. 25=垂直百叶(上下)
  104. 26=垂直百叶(下上)
  105. 27=左右对开
  106. 28=上下对开
  107. 29=左右闭合
  108. 30=上下闭合
  109. 31=向左拉伸
  110. 32=向右拉伸
  111. 33=向上拉伸
  112. 34=向下拉伸
  113. 35=分散向左拉伸
  114. 36=分散向右拉伸
  115. 37=冒泡
  116. 38=下雪
  117. */
  118. //*******************************************************************************
  119. //**设置节目定时属性结构体****************************************************
  120. public struct PROGRAMTIME
  121. {
  122. public int EnableFlag; //启用定时的标记,ENABLE_DATE为启用日期,ENABLE_TIME为启用时间,ENABLE_WEEK为启用星期,可用或运算进行组合,如 ENABLE_DATE | ENABLE_TIME | ENABLE_WEEK
  123. public int WeekValue; //启用星期后,选择要定时的星期里的某些天,用宏 WEEK_MON,WEEK_TUES,WEEK_WEN,WEEK_THUR,WEEK_FRI,WEEK_SAT,WEEK_SUN 通过或运算进行组合
  124. public int StartYear; //起始年
  125. public int StartMonth; //起始月
  126. public int StartDay; //起始日
  127. public int StartHour; //起姐时
  128. public int StartMinute; //起始分
  129. public int StartSecond; //起始秒
  130. public int EndYear; //结束年
  131. public int EndMonth; //结束月
  132. public int EndDay; //结束日
  133. public int EndHour; //结束时
  134. public int EndMinute; //结束分
  135. public int EndSecond; //结束秒
  136. };
  137. //**********************************************************************************
  138. //数字时钟属性结构体*********************************************************************************
  139. [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
  140. public struct DIGITALCLOCKAREAINFO
  141. {
  142. [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
  143. public string ShowStr; //自定义显示字符串
  144. //[MarshalAs(UnmanagedType.Struct)]
  145. public FONTPROP ShowStrFont; //自定义显示字符串以及日期星期时间的字体属性,注意此字体属性里的FontColor只对自定义显示字体有效,其它项的颜色有单独的颜色属性,属性的赋值见FONTPROP结构体说明
  146. public int TimeLagType; //时差类型 0为超前,1为滞后
  147. public int HourNum; //时差小时数
  148. public int MiniteNum; //时差分钟数
  149. public int DateFormat; //日期格式 0.YYYY年MM月DD日 1.YY年MM月DD日 2.MM/DD/YYYY 3.YYYY/MM/DD 4.YYYY-MM-DD 5.YYYY.MM.DD 6.MM.DD.YYYY 7.DD.MM.YYYY
  150. public int DateColor; //日期字体颜色
  151. public int WeekFormat; //星期格式 0.星期X 1.Monday 2.Mon.
  152. public int WeekColor; //星期字体颜色
  153. public int TimeFormat; //时间格式 0.HH时mm分ss秒 1.HH時mm分ss秒 2.HH:mm:ss 3.上午 HH:mm:ss 4.AM HH:mm:ss 5.HH:mm:ss 上午 6.HH:mm:ss AM
  154. public int TimeColor; //时间字体颜色
  155. public int IsShowYear; //是否显示年 TRUE为显示 FALSE不显示 下同
  156. public int IsShowWeek; //是否显示星期
  157. public int IsShowMonth; //是否显示月
  158. public int IsShowDay; //是否显示日
  159. public int IsShowHour; //是否显示时
  160. public int IsShowMinute; //是否显示分
  161. public int IsShowSecond; //是否显示秒
  162. public int IsMutleLineShow; //是否多行显示
  163. };
  164. //******************************************************************************
  165. //**模拟时钟属性结构体*********************************************************
  166. [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
  167. public struct CLOCKAREAINFO
  168. {
  169. [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
  170. public string ShowStr; //自定义显示字符串
  171. public FONTPROP ShowStrFont; //自定义显示字符串字体属性
  172. public int TimeLagType; //时差类型 0为超前,1为滞后
  173. public int HourNum; //时差小时数
  174. public int MiniteNum; //时差分钟数
  175. public int ClockType; //表盘类型 0.圆形 1.正方形
  176. public int HourMarkColor; //时标颜色
  177. public int HourMarkType; //时标类型 0.圆形 1.正方形
  178. public int HourMarkWidth; //时标宽度 1~16
  179. public int MiniteMarkColor; //分标颜色
  180. public int MiniteMarkType; //分标类型 0.圆形 1.正方形
  181. public int MiniteMarkWidth; //分标宽度 1~16
  182. public int HourPointerColor; //时针颜色
  183. public int MinutePointerColor; //分针颜色
  184. public int SecondPointerColor; //秒针颜色
  185. public int HourPointerWidth; //时针的宽度 1~5
  186. public int MinutePointerWidth; //分针的宽度 1~5
  187. public int SecondPointerWidth; //秒针的宽度 1~5
  188. public int IsShowDate; //是否显示日期
  189. public int DateFormat; //日期格式 0.YYYY年MM月DD日 1.YY年MM月DD日 2.MM/DD/YYYY 3.YYYY/MM/DD 4.YYYY-MM-DD 5.YYYY.MM.DD 6.MM.DD.YYYY 7.DD.MM.YYYY
  190. public FONTPROP DateFont; //日期字体属性
  191. public int IsShowWeek; //是否显示星期
  192. public int WeekFormat; //星期格式 0.星期X 1.Monday 2.Mon.
  193. public FONTPROP WeekFont; //星期字体属性
  194. };
  195. //**************************************************************************************
  196. //**计时属性结构体**********************************************************************
  197. [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
  198. public struct TIMEAREAINFO
  199. {
  200. public int ShowFormat; //显示格式 0.xx天xx时xx分xx秒 1.xx天xx時xx分xx秒 2.xxDayxxHourxxMinxxSec 3.XXdXXhXXmXXs 4.xx:xx:xx:xx
  201. public int nYear; //结束年
  202. public int nMonth; //结束月
  203. public int nDay; //结束日
  204. public int nHour; //结束时
  205. public int nMinute; //结束分
  206. public int nSecond; //结束秒
  207. public int IsShowDay; //是否显示天
  208. public int IsShowHour; //是否显示时
  209. public int IsShowMinute; //是否显示分
  210. public int IsShowSecond; //是否显示秒
  211. public int IsMutleLineShow; //是否多行显示,指的是自定义文字与计时文字是否分行显示
  212. [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
  213. public string ShowStr; //自定义文字字符串
  214. public int TimeStrColor; //计时文字的颜色
  215. public FONTPROP ShowFont; //自定义文字及计时文字颜色,其中FontColor只对文定义文字有效,计时文字颜色为TimeStrColor
  216. };
  217. //****************************************************************************************
  218. //**LED通讯参数修改结构体*****************************************************************
  219. [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
  220. public struct LEDCOMMUNICATIONPARAMETER
  221. {
  222. public int dwMask; //要修改项的标记 0.修改网络通讯参数 1.修改串口通讯参数 2.修改网口和串口通讯参数
  223. [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
  224. public string IpStr; //新的IP地址,只有dwMask为0或2时才需赋值,其它值无需赋值,格式例如 192.168.1.100
  225. [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
  226. public string NetMaskStr; //新的子网掩码,只有dwMask为0或2时才需赋值,其它值无需赋值,格式例如 255.255.255.0
  227. [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
  228. public string GatewayStr; //新的网关,只有dwMask为0或2时才需赋值,其它值无需赋值,格式例如 192.168.1.1
  229. [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 18)]
  230. public string MacStr; //新的MAC地址,只有dwMask为0或2时才需赋值,其它值无需赋值,格式例如 12-34-56-78-9a-bc,如无需修改请设为 ff-ff-ff-ff-ff-ff
  231. public int Baud; //波特率,只有dwMask为1或2时才需赋值,其它值无需赋值,0.9600 1.57600 2.115200
  232. public int LedNumber; //LED屏号 1~255,网络通讯和232通讯赋值 1 即可,485必需和控制卡显示的屏号相同才可通讯
  233. };
  234. //*****************************************************************************************
  235. //**流水边框属性结构体************************************************************************
  236. [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
  237. public struct WATERBORDERINFO
  238. {
  239. public int Flag; //流水边框加载类型标志,0.为动态库预置的边框 1.为从文件加载的边框
  240. public int BorderType; //边框的类型,Flag为0是有效,0.单色边框 1.双基色边框 2.全彩边框
  241. public int BorderValue; //边框的值,Flag为0是有效,单色边框取值范围是0~39,双基色边框取值范围是0~34,全彩边框取值范围是0~21
  242. public int BorderColor; //边框线颜色,Flag为0并且BorderType为0是才有效
  243. public int BorderStyle; //边框显示的样式 0.固定 1.顺时针 2.逆时针 3.闪烁
  244. public int BorderSpeed;//边框流动的速度
  245. [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)]
  246. public string WaterBorderBmpPath; //边框图片文件的路径,注意只能是bmp图片,图片大小必需是宽度为32点,取高度小于等于8
  247. };
  248. //*********************************************************************************************
  249. //**定时开关屏设置属性************************************************************************
  250. public struct ONOFFTIMEINFO
  251. {
  252. [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
  253. public int[] TimeFlag;
  254. [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
  255. public int[] StartHour;
  256. [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
  257. public int[] StartMinute;
  258. [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
  259. public int[] EndHour;
  260. [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
  261. public int[] EndMinute;
  262. };
  263. //********************************************************************************************
  264. //**定时亮度设置属性**************************************************************************
  265. public struct BRIGHTNESSTIMEINFO
  266. {
  267. [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
  268. public int[] TimeFlag;
  269. [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
  270. public int[] StartHour;
  271. [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
  272. public int[] StartMinute;
  273. [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
  274. public int[] EndHour;
  275. [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
  276. public int[] EndMinute;
  277. [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
  278. public int[] BrightnessValue;
  279. };
  280. //*******************************************************************************************
  281. /********************************************************************************************
  282. * LV_CreateProgram 创建节目对象,返回类型为 HPROGRAM
  283. *
  284. * 参数说明
  285. * LedWidth 屏的宽度
  286. * LedHeight 屏的高度
  287. * ColorType 屏的颜色 1.单色 2.双基色 3.七彩 4.全彩
  288. * 返回值
  289. * 0 创建节目对象失败
  290. * 非0 创建节目对象成功
  291. ********************************************************************************************/
  292. [DllImport("lv_led.dll", EntryPoint = "LV_CreateProgram", CharSet = CharSet.Unicode)]
  293. public static extern int LV_CreateProgram(int LedWidth, int LedHeight, int ColorType);
  294. /*********************************************************************************************
  295. * LV_AddProgram 添加一个节目
  296. *
  297. * 参数说明
  298. * hProgram 节目对象句柄
  299. * ProgramNo 节目号
  300. * ProgramTime 节目播放时长 0.节目播放时长 非0.指定播放时长
  301. * LoopCount 循环播放次数
  302. * 返回值
  303. * 0 成功
  304. * 非0 失败,调用LV_GetError来获取错误信息
  305. ********************************************************************************************/
  306. [DllImport("lv_led.dll", EntryPoint = "LV_AddProgram", CharSet = CharSet.Unicode)]
  307. public static extern int LV_AddProgram(int hProgram, int ProgramNo, int ProgramTime, int LoopCount);
  308. /*********************************************************************************************
  309. * LV_SetProgramTime 设置节目定时
  310. *
  311. * 参数说明
  312. * hProgram 节目对象句柄
  313. * ProgramNo 节目号
  314. * pProgramTime 节目定时属性,设置方式见PROGRAMTIME结构体注示
  315. * 返回值
  316. * 0 成功
  317. * 非0 失败,调用LV_GetError来获取错误信息
  318. ********************************************************************************************/
  319. [DllImport("lv_led.dll", EntryPoint = "LV_SetProgramTime", CharSet = CharSet.Unicode)]
  320. public static extern int LV_SetProgramTime(int hProgram, int ProgramNo, ref PROGRAMTIME pProgramTime);
  321. /*********************************************************************************************
  322. * LV_AddImageTextArea 添加一个图文区域
  323. *
  324. * 参数说明
  325. * hProgram 节目对象句柄
  326. * ProgramNo 节目号
  327. * AreaNo 区域号
  328. * pAreaRect 区域坐标属性,设置方式见AREARECT结构体注示
  329. * IsBackgroundArea 是否为背景区域,0.前景区(默认) 1.背景区
  330. * 返回值
  331. * 0 成功
  332. * 非0 失败,调用LV_GetError来获取错误信息
  333. ********************************************************************************************/
  334. [DllImport("lv_led.dll", EntryPoint = "LV_AddImageTextArea", CharSet = CharSet.Unicode)]
  335. public static extern int LV_AddImageTextArea(int hProgram, int ProgramNo, int AreaNo, ref AREARECT pAreaRect, int IsBackgroundArea);
  336. /*********************************************************************************************
  337. * LV_AddFileToImageTextArea 添加一个文件到图文区
  338. *
  339. * 参数说明
  340. * hProgram 节目对象句柄
  341. * ProgramNo 节目号
  342. * AreaNo 区域号
  343. * FilePath 文件路径,支持的文件类型有 txt rtf bmp gif png jpg jpeg tiff
  344. * pPlayProp 显示的属性,设置方式见PLAYPROP结构体注示
  345. * 返回值
  346. * 0 成功
  347. * 非0 失败,调用LV_GetError来获取错误信息
  348. ********************************************************************************************/
  349. [DllImport("lv_led.dll", EntryPoint = "LV_AddFileToImageTextArea", CharSet = CharSet.Unicode)]
  350. public static extern int LV_AddFileToImageTextArea(int hProgram, int ProgramNo, int AreaNo, string FilePath, ref PLAYPROP pPlayProp);
  351. /*********************************************************************************************
  352. * LV_AddSingleLineTextToImageTextArea 添加一个单行文本到图文区
  353. *
  354. * 参数说明
  355. * hProgram 节目对象句柄
  356. * ProgramNo 节目号
  357. * AreaNo 区域号
  358. * AddType 添加的类型 0.为字符串 1.文件(只支持txt和rtf文件)
  359. * AddStr AddType为0则为字符串数据,AddType为1则为文件路径
  360. * pFontProp 如果AddType为字符串类型或AddType为文件类型且文件为txt则可传入以赋值的该结构体,其它可赋NULL
  361. * pPlayProp 显示的属性,设置方式见PLAYPROP结构体注示
  362. * 返回值
  363. * 0 成功
  364. * 非0 失败,调用LV_GetError来获取错误信息
  365. ********************************************************************************************/
  366. [DllImport("lv_led.dll", EntryPoint = "LV_AddSingleLineTextToImageTextArea", CharSet = CharSet.Unicode)]
  367. public static extern int LV_AddSingleLineTextToImageTextArea(int hProgram, int ProgramNo, int AreaNo, int AddType, string AddStr, ref FONTPROP pFontProp, ref PLAYPROP pPlayProp);
  368. /*********************************************************************************************
  369. * LV_AddMultiLineTextToImageTextArea 添加一个多行文本到图文区
  370. *
  371. * 参数说明
  372. * hProgram 节目对象句柄
  373. * ProgramNo 节目号
  374. * AreaNo 区域号
  375. * AddType 添加的类型 0.为字符串 1.文件(只支持txt和rtf文件)
  376. * AddStr AddType为0则为字符串数据,AddType为1则为文件路径
  377. * pFontProp 如果AddType为字符串类型或AddType为文件类型且文件为txt则可传入以赋值的该结构体,其它可赋NULL
  378. * pPlayProp 显示的属性,设置方式见PLAYPROP结构体注示
  379. * nAlignment 水平对齐样式,0.左对齐 1.右对齐 2.水平居中 (注意:只对字符串和txt文件有效)
  380. * IsVCenter 是否垂直居中 0.置顶(默认) 1.垂直居中
  381. * 返回值
  382. * 0 成功
  383. * 非0 失败,调用LV_GetError来获取错误信息
  384. ********************************************************************************************/
  385. [DllImport("lv_led.dll", EntryPoint = "LV_AddMultiLineTextToImageTextArea", CharSet = CharSet.Unicode)]
  386. public static extern int LV_AddMultiLineTextToImageTextArea(int hProgram, int ProgramNo, int AreaNo, int AddType, string AddStr, ref FONTPROP pFontProp, ref PLAYPROP pPlayProp, int nAlignment, int IsVCenter);
  387. /*********************************************************************************************
  388. * LV_AddStaticTextToImageTextArea 添加一个静止文本到图文区
  389. *
  390. * 参数说明
  391. * hProgram 节目对象句柄
  392. * ProgramNo 节目号
  393. * AreaNo 区域号
  394. * AddType 添加的类型 0.为字符串 1.文件(只支持txt和rtf文件)
  395. * AddStr AddType为0则为字符串数据,AddType为1则为文件路径
  396. * pFontProp 如果AddType为字符串类型或AddType为文件类型且文件为txt则可传入以赋值的该结构体,其它可赋NULL
  397. * DelayTime 显示的时长 1~65535
  398. * nAlignment 水平对齐样式,0.左对齐 1.右对齐 2.水平居中 (注意:只对字符串和txt文件有效)
  399. * IsVCenter 是否垂直居中 0.置顶(默认) 1.垂直居中
  400. * 返回值
  401. * 0 成功
  402. * 非0 失败,调用LV_GetError来获取错误信息
  403. ********************************************************************************************/
  404. [DllImport("lv_led.dll", EntryPoint = "LV_AddStaticTextToImageTextArea", CharSet = CharSet.Unicode)]
  405. public static extern int LV_AddStaticTextToImageTextArea(int hProgram, int ProgramNo, int AreaNo, int AddType, string AddStr, ref FONTPROP pFontProp, int DelayTime, int nAlignment, int IsVCenter);
  406. /*********************************************************************************************
  407. * LV_QuickAddSingleLineTextArea 快速添加一个单行文本区域
  408. *
  409. * 参数说明
  410. * hProgram 节目对象句柄
  411. * ProgramNo 节目号
  412. * AreaNo 区域号
  413. * pAreaRect 区域坐标属性,设置方式见AREARECT结构体注示
  414. * AddType 添加的类型 0.为字符串 1.文件(只支持txt和rtf文件)
  415. * AddStr AddType为0则为字符串数据,AddType为1则为文件路径
  416. * pFontProp 如果AddType为字符串类型或AddType为文件类型且文件为txt则可传入以赋值的该结构体,其它可赋NULL
  417. * nSpeed 滚动速度 1~255
  418. * 返回值
  419. * 0 成功
  420. * 非0 失败,调用LV_GetError来获取错误信息
  421. ********************************************************************************************/
  422. [DllImport("lv_led.dll", EntryPoint = "LV_QuickAddSingleLineTextArea", CharSet = CharSet.Unicode)]
  423. public static extern int LV_QuickAddSingleLineTextArea(int hProgram, int ProgramNo, int AreaNo, ref AREARECT pAreaRect, int AddType, string AddStr, ref FONTPROP pFontProp, int nSpeed);
  424. /*********************************************************************************************
  425. * LV_AddDigitalClockArea 添加一个数字时钟区域
  426. *
  427. * 参数说明
  428. * hProgram 节目对象句柄
  429. * ProgramNo 节目号
  430. * AreaNo 区域号
  431. * pAreaRect 区域坐标属性,设置方式见AREARECT结构体注示
  432. * pDigitalClockAreaInfo 数字时钟属性,见DIGITALCLOCKAREAINFO结构体注示
  433. * 返回值
  434. * 0 成功
  435. * 非0 失败,调用LV_GetError来获取错误信息
  436. ********************************************************************************************/
  437. [DllImport("lv_led.dll", EntryPoint = "LV_AddDigitalClockArea", CharSet = CharSet.Unicode)]
  438. public static extern int LV_AddDigitalClockArea(int hProgram, int ProgramNo, int AreaNo, ref AREARECT pAreaRect, ref DIGITALCLOCKAREAINFO pDigitalClockAreaInfo);
  439. /*********************************************************************************************
  440. * LV_AddTimeArea 添加一个计时区域
  441. *
  442. * 参数说明
  443. * hProgram 节目对象句柄
  444. * ProgramNo 节目号
  445. * AreaNo 区域号
  446. * pAreaRect 区域坐标属性,设置方式见AREARECT结构体注示
  447. * pTimeAreaInfo 计时属性,见TIMEAREAINFO结构体注示
  448. * 返回值
  449. * 0 成功
  450. * 非0 失败,调用LV_GetError来获取错误信息
  451. ********************************************************************************************/
  452. [DllImport("lv_led.dll", EntryPoint = "LV_AddTimeArea", CharSet = CharSet.Unicode)]
  453. public static extern int LV_AddTimeArea(int hProgram, int ProgramNo, int AreaNo, ref AREARECT pAreaRect, ref TIMEAREAINFO pTimeAreaInfo);
  454. /*********************************************************************************************
  455. * LV_AddClockArea 添加一个模拟时钟区域
  456. *
  457. * 参数说明
  458. * hProgram 节目对象句柄
  459. * ProgramNo 节目号
  460. * AreaNo 区域号
  461. * pAreaRect 区域坐标属性,设置方式见AREARECT结构体注示
  462. * pClockAreaInfo 模拟时钟属性,见CLOCKAREAINFO结构体注示
  463. * 返回值
  464. * 0 成功
  465. * 非0 失败,调用LV_GetError来获取错误信息
  466. ********************************************************************************************/
  467. [DllImport("lv_led.dll", EntryPoint = "LV_AddClockArea", CharSet = CharSet.Unicode)]
  468. public static extern int LV_AddClockArea(int hProgram, int ProgramNo, int AreaNo, ref AREARECT pAreaRect, ref CLOCKAREAINFO pClockAreaInfo);
  469. /*********************************************************************************************
  470. * LV_AddWaterBorder 添加一个流水边框区域
  471. *
  472. * 参数说明
  473. * hProgram 节目对象句柄
  474. * ProgramNo 节目号
  475. * AreaNo 区域号
  476. * pAreaRect 区域坐标属性,设置方式见AREARECT结构体注示
  477. * pWaterBorderInfo 流水边框属性,见WATERBORDERINFO结构体注示
  478. * 返回值
  479. * 0 成功
  480. * 非0 失败,调用LV_GetError来获取错误信息
  481. ********************************************************************************************/
  482. [DllImport("lv_led.dll", EntryPoint = "LV_AddWaterBorder", CharSet = CharSet.Unicode)]
  483. public static extern int LV_AddWaterBorder(int hProgram, int ProgramNo, int AreaNo, ref AREARECT pAreaRect, ref WATERBORDERINFO pWaterBorderInfo);
  484. /*********************************************************************************************
  485. * LV_DeleteProgram 销毁节目对象(注意:如果此节目对象不再使用,请调用此函数销毁,否则会造成内存泄露)
  486. *
  487. * 参数说明
  488. * hProgram 节目对象句柄
  489. ********************************************************************************************/
  490. [DllImport("lv_led.dll", EntryPoint = "LV_DeleteProgram", CharSet = CharSet.Unicode)]
  491. public static extern void LV_DeleteProgram(int hProgram);
  492. /*********************************************************************************************
  493. * LV_Send 发送节目,此发送为一对一发送
  494. *
  495. * 参数说明
  496. * pCommunicationInfo 通讯参数,赋值方式见COMMUNICATIONINFO结构体注示
  497. * hProgram 节目对象句柄
  498. * 返回值
  499. * 0 成功
  500. * 非0 失败,调用LV_GetError来获取错误信息
  501. ********************************************************************************************/
  502. [DllImport("lv_led.dll", EntryPoint = "LV_Send", CharSet = CharSet.Unicode)]
  503. public static extern int LV_Send(ref COMMUNICATIONINFO pCommunicationInfo, int hProgram);
  504. /*********************************************************************************************
  505. * LV_TestOnline 测试LED屏是否可连接上
  506. *
  507. * 参数说明
  508. * pCommunicationInfo 通讯参数,赋值方式见COMMUNICATIONINFO结构体注示
  509. * 返回值
  510. * 0 成功
  511. * 非0 失败,调用LV_GetError来获取错误信息
  512. ********************************************************************************************/
  513. [DllImport("lv_led.dll", EntryPoint = "LV_TestOnline", CharSet = CharSet.Unicode)]
  514. public static extern int LV_TestOnline(ref COMMUNICATIONINFO pCommunicationInfo);
  515. /*********************************************************************************************
  516. * LV_SetBasicInfo 设置基本屏参
  517. *
  518. * 参数说明
  519. * pCommunicationInfo 通讯参数,赋值方式见COMMUNICATIONINFO结构体注示
  520. * ColorType 屏的颜色 1.单色 2.双基色 3.七彩 4.全彩
  521. * LedWidth 屏的宽度点数
  522. * LedHeight 屏的高度点数
  523. * 返回值
  524. * 0 成功
  525. * 非0 失败,调用LV_GetError来获取错误信息
  526. ********************************************************************************************/
  527. [DllImport("lv_led.dll", EntryPoint = "LV_SetBasicInfo", CharSet = CharSet.Unicode)]
  528. public static extern int LV_SetBasicInfo(ref COMMUNICATIONINFO pCommunicationInfo, int ColorType, int LedWidth, int LedHeight);
  529. /*********************************************************************************************
  530. * LV_SetOEDA 设置OE DA
  531. *
  532. * 参数说明
  533. * pCommunicationInfo 通讯参数,赋值方式见COMMUNICATIONINFO结构体注示
  534. * Oe OE 0.低有效 1.高有效
  535. * Da DA 0.负极性 1.正极性
  536. * 返回值
  537. * 0 成功
  538. * 非0 失败,调用LV_GetError来获取错误信息
  539. ********************************************************************************************/
  540. [DllImport("lv_led.dll", EntryPoint = "LV_SetOEDA", CharSet = CharSet.Unicode)]
  541. public static extern int LV_SetOEDA(ref COMMUNICATIONINFO pCommunicationInfo, int Oe, int Da);
  542. /*********************************************************************************************
  543. * LV_AdjustTime 校时
  544. *
  545. * 参数说明
  546. * pCommunicationInfo 通讯参数,赋值方式见COMMUNICATIONINFO结构体注示
  547. * 返回值
  548. * 0 成功
  549. * 非0 失败,调用LV_GetError来获取错误信息
  550. ********************************************************************************************/
  551. [DllImport("lv_led.dll", EntryPoint = "LV_AdjustTime", CharSet = CharSet.Unicode)]
  552. public static extern int LV_AdjustTime(ref COMMUNICATIONINFO pCommunicationInfo);
  553. /*********************************************************************************************
  554. * LV_PowerOnOff 开关屏
  555. *
  556. * 参数说明
  557. * pCommunicationInfo 通讯参数,赋值方式见COMMUNICATIONINFO结构体注示
  558. * OnOff 开关值 0.关屏 1.开屏
  559. * 返回值
  560. * 0 成功
  561. * 非0 失败,调用LV_GetError来获取错误信息
  562. ********************************************************************************************/
  563. [DllImport("lv_led.dll", EntryPoint = "LV_PowerOnOff", CharSet = CharSet.Unicode)]
  564. public static extern int LV_PowerOnOff(ref COMMUNICATIONINFO pCommunicationInfo, int OnOff);
  565. /*********************************************************************************************
  566. * LV_TimePowerOnOff 定时开关屏
  567. *
  568. * 参数说明
  569. * pCommunicationInfo 通讯参数,赋值方式见COMMUNICATIONINFO结构体注示
  570. * pTimeInfo 定时开关屏属性,详见ONOFFTIMEINFO结构体注示
  571. * 返回值
  572. * 0 成功
  573. * 非0 失败,调用LV_GetError来获取错误信息
  574. ********************************************************************************************/
  575. [DllImport("lv_led.dll", EntryPoint = "LV_TimePowerOnOff", CharSet = CharSet.Unicode)]
  576. public static extern int LV_TimePowerOnOff(ref COMMUNICATIONINFO pCommunicationInfo, ref ONOFFTIMEINFO pTimeInfo);
  577. /*********************************************************************************************
  578. * LV_SetBrightness 设置亮度
  579. *
  580. * 参数说明
  581. * pCommunicationInfo 通讯参数,赋值方式见COMMUNICATIONINFO结构体注示
  582. * BrightnessValue 亮度值 0~15
  583. * 返回值
  584. * 0 成功
  585. * 非0 失败,调用LV_GetError来获取错误信息
  586. ********************************************************************************************/
  587. [DllImport("lv_led.dll", EntryPoint = "LV_SetBrightness", CharSet = CharSet.Unicode)]
  588. public static extern int LV_SetBrightness(ref COMMUNICATIONINFO pCommunicationInfo, int BrightnessValue);
  589. /*********************************************************************************************
  590. * LV_TimeBrightness 定时亮度
  591. *
  592. * 参数说明
  593. * pCommunicationInfo 通讯参数,赋值方式见COMMUNICATIONINFO结构体注示
  594. * pBrightnessTimeInfo 定时亮度属性,详见BRIGHTNESSTIMEINFO结构体注示
  595. * 返回值
  596. * 0 成功
  597. * 非0 失败,调用LV_GetError来获取错误信息
  598. ********************************************************************************************/
  599. [DllImport("lv_led.dll", EntryPoint = "LV_TimeBrightness", CharSet = CharSet.Unicode)]
  600. public static extern int LV_TimeBrightness(ref COMMUNICATIONINFO pCommunicationInfo, ref BRIGHTNESSTIMEINFO pBrightnessTimeInfo);
  601. /*********************************************************************************************
  602. * LV_SetLanguage 设置LED显示的语言
  603. *
  604. * 参数说明
  605. * pCommunicationInfo 通讯参数,赋值方式见COMMUNICATIONINFO结构体注示
  606. * LanguageValue 语言值 0.中文(默认) 1.英文
  607. * 返回值
  608. * 0 成功
  609. * 非0 失败,调用LV_GetError来获取错误信息
  610. ********************************************************************************************/
  611. [DllImport("lv_led.dll", EntryPoint = "LV_SetLanguage", CharSet = CharSet.Unicode)]
  612. public static extern int LV_SetLanguage(ref COMMUNICATIONINFO pCommunicationInfo, int LanguageValue);
  613. /*********************************************************************************************
  614. * LV_LedTest LED测试
  615. *
  616. * 参数说明
  617. * pCommunicationInfo 通讯参数,赋值方式见COMMUNICATIONINFO结构体注示
  618. * TestValue 测试值
  619. * 返回值
  620. * 0 成功
  621. * 非0 失败,调用LV_GetError来获取错误信息
  622. ********************************************************************************************/
  623. [DllImport("lv_led.dll", EntryPoint = "LV_LedTest", CharSet = CharSet.Unicode)]
  624. public static extern int LV_LedTest(ref COMMUNICATIONINFO pCommunicationInfo, int TestValue);
  625. /*********************************************************************************************
  626. * LV_TimeLocker LED定时锁屏
  627. *
  628. * 参数说明
  629. * pCommunicationInfo 通讯参数,赋值方式见COMMUNICATIONINFO结构体注示
  630. * LockerYear 锁屏年
  631. * LockerMonth 锁屏月
  632. * LockerDay 锁屏日
  633. * LockerHour 锁屏时
  634. * LockerMinute 锁屏分
  635. * 返回值
  636. * 0 成功
  637. * 非0 失败,调用LV_GetError来获取错误信息
  638. ********************************************************************************************/
  639. [DllImport("lv_led.dll", EntryPoint = "LV_TimeLocker", CharSet = CharSet.Unicode)]
  640. public static extern int LV_TimeLocker(ref COMMUNICATIONINFO pCommunicationInfo, int LockerYear, int LockerMonth, int LockerDay, int LockerHour, int LockerMinute);
  641. /*********************************************************************************************
  642. * LV_CancelLocker 取消定时锁屏
  643. *
  644. * 参数说明
  645. * pCommunicationInfo 通讯参数,赋值方式见COMMUNICATIONINFO结构体注示
  646. * 返回值
  647. * 0 成功
  648. * 非0 失败,调用LV_GetError来获取错误信息
  649. ********************************************************************************************/
  650. [DllImport("lv_led.dll", EntryPoint = "LV_CancelLocker", CharSet = CharSet.Unicode)]
  651. public static extern int LV_CancelLocker(ref COMMUNICATIONINFO pCommunicationInfo);
  652. /*********************************************************************************************
  653. * LV_SetLedCommunicationParameter 设置LED通讯参数
  654. *
  655. * 参数说明
  656. * pCommunicationInfo 通讯参数,赋值方式见COMMUNICATIONINFO结构体注示
  657. * pLedCommunicationParameter 详见LEDCOMMUNICATIONPARAMETER结构体注示
  658. * 返回值
  659. * 0 成功
  660. * 非0 失败,调用LV_GetError来获取错误信息
  661. ********************************************************************************************/
  662. [DllImport("lv_led.dll", EntryPoint = "LV_SetLedCommunicationParameter", CharSet = CharSet.Unicode)]
  663. public static extern int LV_SetLedCommunicationParameter(ref COMMUNICATIONINFO pCommunicationInfo, ref LEDCOMMUNICATIONPARAMETER pLedCommunicationParameter);
  664. /*********************************************************************************************
  665. * LV_GetError 获取错误信息(只支持中文)
  666. *
  667. * 参数说明
  668. * nErrCode 函数执行返回的错误代码
  669. * 返回值
  670. * 错误信息字符串
  671. ********************************************************************************************/
  672. public static string LS_GetError(int nErrCode)
  673. {
  674. string ErrStr;
  675. switch (nErrCode)
  676. {
  677. case -1:
  678. ErrStr = "无效的节目句柄。"; break;
  679. case -2:
  680. ErrStr = "节目已经存在。"; break;
  681. case -3:
  682. ErrStr = "指定的节目不存在。"; break;
  683. case -4:
  684. ErrStr = "定的区域不存在。"; break;
  685. case -5:
  686. ErrStr = "创建socket失败。"; break;
  687. case -6:
  688. ErrStr = "错误的回复包。"; break;
  689. case -7:
  690. ErrStr = "不支持的文件类型。"; break;
  691. case -8:
  692. ErrStr = "IP网关掩码或MAC字符串格式错误。"; break;
  693. case -9:
  694. ErrStr = "错误的波特率。"; break;
  695. case -10:
  696. ErrStr = "文件路径不存在。"; break;
  697. case -11:
  698. ErrStr = "区域重叠。"; break;
  699. case -12:
  700. ErrStr = "打开文件失败。"; break;
  701. case -14:
  702. ErrStr = "区域已存在。"; break;
  703. case -15:
  704. ErrStr = "无效的发送类型。"; break;
  705. case -16:
  706. ErrStr = "绘图失败。"; break;
  707. case -17:
  708. ErrStr = "创建文件夹失败。"; break;
  709. case -30:
  710. ErrStr = "打开串口失败。"; break;
  711. case -31:
  712. ErrStr = "设置串口超时失败。"; break;
  713. case -32:
  714. ErrStr = "设置串口缓冲区失败。"; break;
  715. case -33:
  716. ErrStr = "串口发送数据失败。"; break;
  717. case -34:
  718. ErrStr = "串口接收数据失败。"; break;
  719. case -35:
  720. ErrStr = "串口设置失败。"; break;
  721. case -36:
  722. ErrStr = "串口接收数据超时。"; break;
  723. case -37:
  724. ErrStr = "USB不支持群发。"; break;
  725. case -38:
  726. ErrStr = "发送取消。"; break;
  727. case -100:
  728. ErrStr = "网络连接失败。"; break;
  729. case -101:
  730. ErrStr = "网络发送失败。"; break;
  731. case -102:
  732. ErrStr = "网络接收数据失败。"; break;
  733. case -103:
  734. ErrStr = "bind失败。"; break;
  735. case -104:
  736. ErrStr = "无可用网卡。"; break;
  737. case 0xc140:
  738. ErrStr = "Logo与参屏大小不适应。"; break;
  739. case 0xdaa3:
  740. ErrStr = "控制器繁忙。"; break;
  741. case 0xd5b0:
  742. ErrStr = "固件程序型号不匹配。"; break;
  743. case 0xd5b4:
  744. ErrStr = "不是有效的固件程序。"; break;
  745. case 0xdab8:
  746. ErrStr = "节目颜色或屏宽高与控制卡屏参设定值不一致。"; break;
  747. case 0xc1ba:
  748. ErrStr = "超出控制卡带载。"; break;
  749. case 0xdab5:
  750. ErrStr = "节目数据大小超过允许的最大值。"; break;
  751. default:
  752. ErrStr = "未定义错误。"; break;
  753. }
  754. return ErrStr;
  755. }
  756. }
  757. }