标题 | LED点阵屏定时自动发布字幕初探 |
范文 | 刘德军 摘要:LED点阵屏通过LED(发光二极管)组成,以灯珠亮灭来显示文字、图片、动画、视频。LED点阵显示屏有制作简单,安装方便的优点,被广泛应用于各种公共场合。如何实现定时自动发布动态更新的信息是本文重点探讨的内容。 关键词:LED点阵屏;定时;发布;自动 中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2016)36-0241-02 我院在门诊一块单色LED屏,专用于门诊专家排班发布,考虑到手工处理每天不同排班信息较为繁琐,故考虑通过程序控制来实现了LED点阵屏定时自动发布字幕功能。 1 需求 该功能的需求如下:① 从数据库中获取每日专家排班信息;② 只发布当天的专家排班信息;③ 发生排班调整,可手工更新;④ 能自动定时发布。 2 方法 用C#通过调用开发包中封装的DLL文件,并读取数据库中排班信息,向屏幕区域添加,并完成发送,具体流如下图示: 3 详细步骤 3.1 建立C#应用程序 建立界面如图1,控件参数见下表。 3.2 编写代码 //常用命名空间略 using System.Runtime.InteropServices; using System.Data.OleDb; namespace WindowsFormsApplication1 {public partial class Form1 : Form {//常数定义(略) //调用动态库(略) public Form1() {InitializeComponent();} private void Form1_Load(object sender, EventArgs e) { timer1.Enabled = true; } //获取挂号排班信息(GetGH_info代码略) //获取当前屏号、动态区域 private void GetcurGrpCaption() { RichTextBox1.Text = FAddDynamicArea + "(屏号:" + spnedt_PNo + ")"; RichTextBox1.Text = FAddDYAreaFile + "(屏号:" + spnedt_PNo + ";动态区域编号:" + spnedt_DYAreaID + ")\r\n";} //初始化动态库InitializeDLL()代码略 private void AddScreen()//添加显示屏 { nResult = AddScreen_Dynamic(nControlType, spnedt_PNo, nSendMode,spnedt_Width, spnedt_Height, nScreenType, cbb_Pixel, cbb_Comm, cbb_Baud,edt_StaticIP_IP, spnedt_StaticIP_Port, nServerMode, Barcode, NetworkID, edt_ServerIP, edt_ServerPort,edt_User, edt_Password , edt_SaveFile); GetErrorMessage("执行添加显示屏,", nResult);} //释放动态库Exp_DLL代码略 private void AddScreenDynamicArea()//添加屏幕动态区域 { //添加专家排班信息区域 nResult = AddScreenDynamicArea(spnedt_PNo, spnedt_DYAreaID, nRunMode, spnedt_TimeOut, nAllProRelate, szProRelateList, nPlayPriority, spnedt_DYAreaX, 30, spnedt_DYAreaW, 66, nAreaFMode, nAreaFLine, spnedt_DYAreaFSingleColor, cbb_DYAreaFStunt, spnedt_DYAreaFRunSpeed, spnedt_DYAreaFMoveStep); GetErrorMessage("执行添加屏幕动态区域0,", nResult);} private void AddTxttoDynamicArea()//添加文本到当前动态区域 { nResult = 0; int nSingleLine=0; string textContent = ShowMessage; //添加专家信息 nResult = AddScreenDynamicAreaText(spnedt_PNo, spnedt_DYAreaID,textContent, nSingleLine, "黑体", 20, 0, 65535, 1,spnedt_DYAreaRunSpeed, spnedt_DYAreaShowTime+10); GetErrorMessage("执行添加文本到当前动态区域0, ", nResult); RichTextBox1.Text = RichTextBox1.Text + textContent + "\r\n";}
private void SendDynamicAreaText()//發送信息到动态区域。 { int nResult; nResult = SendDynamicAreaInfoCommand(spnedt_PNo, spnedt_DYAreaID); GetErrorMessage("执行发送信息0, ", nResult);} private void button1_Click(object sender, EventArgs e) { InitializeDLL(); AddScreen(); AddScreenDynamicArea(); GetGH_info(); AddTxttoDynamicArea(); SendDynamicAreaText(); Exp_DLL(); Application.ExitThread();//执行结束后退出程序}}} 3.3 生成可执行文件 在C#编译生成名称为“门诊LED屏信息发布.exe”的可执行文件,该文件位于当前工程目录下“日志清除工具\bin\Debug\”,注意需与引用的DLL位于同一目录下,在“任务计划”中添加任务计划,定时执行即可。 4 体会与说明 实现LED点阵屏定时自动发布字幕的体会如下:1)在程序执行完成后,需由定时器触发程序自时关闭;2)除Button1外的多出的几个按钮用于按顺序测试;3)发生排班调整时,只需手动运行一次即可;4)本例所用的DLL为仰邦BX5二次开发包;5)DLL内置函数详见开发包说明。提供的此功能在Windows XP SP3 + Microsoft Visual Studio 2010及屏参设置正常的环境下调试通过。 参考文献: [1] 宋智军,邱仲潘.Visual C#2010从入门到精通,电子工业出版社,2011. [2] Christian Nagel,Bill Evjen.李铭译,黄静审校[M]. 8版.C#高级编程,2013(10). |
随便看 |
|
科学优质学术资源、百科知识分享平台,免费提供知识科普、生活经验分享、中外学术论文、各类范文、学术文献、教学资料、学术期刊、会议、报纸、杂志、工具书等各类资源检索、在线阅读和软件app下载服务。