基于gsm模块的语音业务智能群呼系统设计(编辑修改稿)内容摘要:
者,可筛选出来,重新拨打。 图 拨号结果显示 20 在拨号界面有个列表,此列表列出了所有的联系人,联系人有具体的信息,包括姓名、号码的属性、 id 号码、 tate 状态信息,其中tate 状态信息显示语音信息是否成功发送给指定人,如果失败,在对应的联系人后面会显示“失败”,成功则显示“成功”。 如果要具体查找某个或某些人,可在寻找列选择联系人的具体信息,然后在右边输入相应信息快速查找。 在拨号界面的右边有许多选项,具体为:列出所有人联系人、 刷新、新增联系人,删除联系人、保存、拨号规则设置、拨号按钮和发送短信按钮。 在发送短信按钮左边是写短信内容的地方。 拨号规则设置是指设定拨打对方号码后,等待对方接听的时间设置。 使用注意 (1)正常使用前,必须连接模块,必须选择数据库文件,必须选择录音文件或直接录音。 (2)拨号等待事件需要设置长一点,如果定时拨打次数过多,可能会被公安部的移动通信监控软件列入黑名单,且如果对方拒接,模块会在一段时间之内失效,如果在这段时间之内继续拨打,下一次的拨号将会产生错误,建议使用默认等待超时时间。 6 结论 本次设计内容是设计一个能够自动呼叫进行语音广播的上位机软件,开发语言使用 Pascal,开发环境使用 Delphi7,主要涉及了串口、定时器、 Access数据库操作,以及 GSM 模块的 AT 指令,软件开 21 发难点在于设计拨号的流程时对各种资源的调配和变量的控制。 开发此软件不但让我熟悉了一般的大型软件开发流程(主要包括单独模块测试、模块联合测试、资源规划、流程规划、整体设计、 BUG调试等),也让我知道了在开发功能复杂的软件时需要的设计态度,一定要要先规划,后设计,在调试大的系统时,犹如堆一个巨大的积木,切记浮躁和盲动。 如 果没有良好的规划和前期工作,后期调试时,整个系统将不能良好地协调,漏洞百出,抽一发而动全身,各种系统变量将变得繁杂而不可预测。 参考文献 [1]王志伟,黄超编著 .Delphi 企业经营管理系统开发实例导航 [M].北京 :人民邮电出版社 ,2020: 220~ 224. [2]张春林 .Delphi6 程序设计导学 [M].北京 :清华大学出版社 ,2020: 220~ 256; [3]段兴,唐一丁,李宝 .Delphi6 数据库实用程序设计 100例 [M].重庆 :人民邮电出版社 ,2020: 56~ 78. [4]清宏计算机工作室 .Delphi编程技巧网络与数据库篇 [M].上海 :机械工业出版社出版 ,2020: 4~ 34. [5]狄宏运,陈战林,赵宗福,钟显宏 .Delphi6组件大全 [M].北京 :电子工业出版社 ,2020:23~34. [6]赵广 . 深度优先的公式发现算法 [J]. 中州大学学报 ,2020,10: 100~ 101. [7]严蔚敏 ,陈文博 . 数据结构及应用算法教程 [M]. 北京 :清华大学出版社, 2020,01:169. [8]周立功 .ARM嵌入式 Linux系统构建与驱动开发范例 [J].电子学报, 2020, 2( 5A): 7982. [9]Mark Balch. Complete digital design [M]. New York: McGrawHill Companies Inc,2020:257. [10]Thomas H. Cormen, Introduction to Algorithms[M]. Boston: The MIT Press,2020,07:321. 22 致谢 基于 GSM 模块的语音业务智能群呼系统的成功完成,要感谢学校提供的优良科研与学术环境和张仁民老师的认真指导。 在完成设计的过程中,借助了学校图书馆的优质图 书资源和学校购买的知网资源、以及网络上的广大软件开发人员共享的编程经验的分享,深深感觉到软件开发是一件站在巨人的肩膀上往前迈进的事业,我们的每一份成果都有着前人十分重要的铺垫。 在开发中遇到问题时,张老师十分耐心地辅导我,一起分析问题原因,好几次跟我一起调试到非常晚,让我非常感动,也教会了我作为一个严谨的工程师应有的坚韧和坚持不懈的精神。 同时,要感谢高吉祥教授为我们争取到的的良好学习环境、优良的设备和教师资源,让我们能专心在大学里学习专业知识,为一个目标坚定不移地奋斗。 23 附录 A 实物图 B 部分程序 Form1 的 formcreate 过程: procedure (Sender: TObject)。 begin loadallm()。 //检测可用串口并加载在 bobox 内 setreame()。 //设置默认的录音名字。 :=39。 版权说明(此处省略 N 字) (39。 因为 memo 一行不能超过 255 个字,所以用 add继续添加说明 39。 )。 end。 加载可用串口与波特率过程: procedure ()。 24 var reg:tregistry。 ts:tstringlist。 i:integer。 begin。 reg:=。 :=HKEY_LOCAL_MACHINE。 (39。 hardware\devicemap\serialm39。 ,false)。 ts:=。 (ts)。 for i:=0 to do begin (([i]))。 end。 :=[0]。 //提供波特率。 (39。 11039。 )。 (39。 30039。 )。 (39。 120039。 )。 (39。 240039。 )。 (39。 480039。 )。 (39。 960039。 )。 (39。 1920039。 )。 (39。 3840039。 )。 25 (39。 5760039。 )。 (39。 11520039。 )。 (39。 23040039。 )。 (39。 46080039。 )。 (39。 92160039。 )。 :=[5]。 end。 其他功能: {******************************************************** * 挂电话 * * * *********************************************************} procedure ()。 begin :=39。 ATH39。 +chr(13)。 end。 {******************************************************** * 删除内容 * * * *********************************************************} procedure (col,str:string)。 begin :=39。 delete from friends where 39。 +col+39。 =39。 +str。 end。 {******************************************************** * 打电话 * * * *********************************************************} procedure (num:string)。 26 begin :=39。 ATD39。 +num+39。 39。 +chr(13)。 end。 {******************************************************** * 发送短信 msg(someone,string) * * * *********************************************************} procedure (tgt,msg:string)。 begin :=39。 AT+CMGF=139。 +chr(13)。 sleep(200)。 :=39。 AT+CMGS=39。 +tgt+chr(13)。 sleep(1000)。 //延时 10ms :=msg+chr(26)。 //ctrl+z sleep(2020)。 end。 {******************************************************** * 设置记录名字(时间 戳) * * * *********************************************************} procedure ()。 var nowtime:Tdatetime。 begin nowtime:=now。 :=datetostr(nowtime)。 // +timetostr(nowtime) end。 {******************************************************** 27 * 刷新 dbgrid 行宽 * * * *********************************************************} procedure ()。 var i:integer。 begin for i:=0 to 1 do begin [i].Width:=70。 end。 end。 {******************************************************** * 得到选中的端口号 * * * *********************************************************} function ():integer。 var temp1,temp2:string。 i:integer。 begin temp1:=。 for i:=1 to length(temp1) do begin if (temp1[i] in [39。 039。 ..39。 939。 ]) then。基于gsm模块的语音业务智能群呼系统设计(编辑修改稿)
相关推荐
................................................................. 46 一、 关键代码 : ........................................................................................................... 46 二、 英文原文:
微分,这也就产生了新的边缘检测方法 —— LOG 边缘检测。 这种检测方法需要用高斯函数对图像进行平滑处理后,再用拉普拉斯算子计算 [09]。 车牌分割 车牌定位 车牌定位的本质是把车牌图像从含有汽车和背景的图像中提取出来,即输入车牌原始图像输出车牌图像。 在自然环境下,原始图像采集背景复杂,光照不均,在自然背景中准确地确定牌照区域是整 个牌照是别的关键。 经过图像于处理后所得到的图像
即: (33)把这个等式代入上式中,就得到系统的第一个运动方程: (34)为了推出系统的第二个运动方程,我们对摆杆垂直方向上的合力进行分析,可以得到下面方程: (35) 即: (36)力矩平衡方程如下: (37)注意:此方程中力矩的方向,由于,因此等式前面有负号。 合并这两个方程,约去和,得到第二个运动方程: (38) 微分方程模型设,当摆杆与垂直向上方向之间的夹角与1(单位是弧度)相比很小
位准双向 I/O 口,具有内部上拉电阻。 P1 口可以驱动4 个 LS 型 TTL 负载。 当管脚写入 “1”时,被内部上拉为高电平,可用作为输入口,因为 内部 含有 上拉 电阻, 当被外部下拉为低电平时,将输出电流。 在 FLASH 编程和校验时, P1 口可作为第八位地址的接收。 P2 口: P2 口 的管脚 是 带 内部上拉电阻的 8 位准双向 I/O 口, P2 口可接收 数据 ,输出为
到达二层( position=2)后停止并开门,待二层使用者进入后再完成第一个使用者的请求到达三层。 当有超载信号时警报指示等亮起,即 q 置 1,电梯将一直在一楼。 当警告信号结束时电梯才正常运行。 图 4 3 一楼到三楼在二楼时接另 一人 图 4 4 有警告信号存在时 课程设计说 明书 10 5 总结 这次 EDA 课程设计虽然时间较短但是收获普丰,使得我对 VHDL
= name。 = age。 } // Property accessors @Id @GeneratedValue(strategy = ) @Column(name = id, unique = true, nullable = false) public Integer getId() { return。 } public void setId(Integer id) { = id。