通信实验.doc_第1页
通信实验.doc_第2页
通信实验.doc_第3页
通信实验.doc_第4页
通信实验.doc_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

一、 实验目的1、了解模块基本功能; 2、了解模块的硬件特性; 3、了解模块的软件特性; 4、了解模块的应用。5、通过编程实现手机短信的收发; 6、加深对VC编程的理解和实践。二、实验内容(含技术指标)移动终端开发VC编程实践短信收发实现,调制并测试整个程序以实现短信的接收和发送。三、 实验仪器(仪器名称、型号、元器件名称、清单、软件名称、版本等)GSM 收发模块SIM300C 模块PC机手机四、 实验原理(基本原理,主要公式,参数计算,实现方法及框图,相关电路等)在GSM于PC端相连接的情况下,通过PC机里的VC软件开发移动终端,并进而通过开发的移动终于,实现模块与测试手机进行短信的手法试验。 GSM 收发模块小系统实现框图及实物连接图如下: 图1-1 GSM 收发模块小系统实现框图 图1- 在五、实验步骤(实验关键操作步骤,仪器、电路及器件选择使用,原程序级关键指令注释等)1.在上次的工程中,将所有的CView类修改为CListView类,以显示短信的读取显示功能;即在程序中查找所有的CView,替换为CListView,并且在头文件总添加如下语句: #include 2.利用创建函数: 3.在上图中先点击“Add Function”按钮,再点击“Edit Code”按钮,添加如下代码: CListCtrl& ListCtrl = GetListCtrl(); ListCtrl.InsertColumn(0, 号码, LVCFMT_LEFT, 100); ListCtrl.InsertColumn(1, 时间, LVCFMT_LEFT, 140); ListCtrl.InsertColumn(2, 消息内容, LVCFMT_LEFT, 500); SetTimer(1, 1000, NULL); /设置定时器1,每1秒触发一次为了让ListCtrl正常显示,在CMygsmView中的PreCreateWindow增加如下一行代码: cs.style |= LVS_SHOWSELALWAYS | LVS_REPORT;4.同理创建OnDestroy函数:5.点击“Add Function”按钮,再点击“Edit Code”按钮,添加代码: KillTimer(1); /关闭定时器1 6.添加一个发送短信资源对话框如;7.在MainFrm.h中定义: CDialogBar m_wndDialogBar; 8.将“VC+手机短信收发”参考工程下负责短信收发处理的SmsTraffic.h和SmsTraffic.cpp拷贝到当前工程的文件夹下,选择VC+的菜单栏ProjectAdd to Project Files将这两个文件加入到工程中。9.将SmsFraffic.cpp中的包含文件改为自己创建的工程名:10.在新创建的IDD_SEND_SM对话框上选中“发送”按钮,点击右键选择ClassWizard,在出现的“Adding a Class”窗口中选择Cancel;11.在对话框中先点击“Add Function”再点击“Edit Code”: 12点击“Edit Code”后输入如下发送短信代码: CComboBox* pNumberWnd=(CComboBox*)m_wndDialogBar.GetDlgItem(IDC_NUMBER); CComboBox* pContentWnd=(CComboBox*)m_wndDialogBar.GetDlgItem(IDC_CONTENT); CString strSmsc; CString strNumber; CString strContent; strSmsc = /成都移动短信中心号码,如果是联通请改pNumberWnd-GetWindowText(strNumber); pContentWnd-GetWindowText(strContent); / 检查号码if(strNumber.GetLength() SetFocus(); pNumberWnd-SetEditSel(-1, 0); return; / 检查短消息内容是否空,或者超长CString strUnicode; CString strUnicode; WCHAR wchar1024; int nCount = :MultiByteToWideChar(CP_ACP, 0, strContent, -1, wchar, 1024); if(nCount SetFocus(); pContentWnd-SetEditSel(-1, 0); return; else if(nCount 70) / 全部用UCS2编码,最大70个字符(半角/全角) AfxMessageBox(消息内容太长,无法发送!); pContentWnd-SetFocus(); pContentWnd-SetEditSel(-1, 0); return; if(AfxMessageBox(确定发送吗?, MB_YESNO) = IDYES) SM_PARAM SmParam; memset(&SmParam, 0, sizeof(SM_PARAM); / 去掉号码前的+ if(strSmsc0 = +) strSmsc = strSmsc.Mid(1); if(strNumber0 = +) strNumber = strNumber.Mid(1); / 在号码前加86 if(strSmsc.Left(2) != 86) strSmsc = 86 + strSmsc; if(strNumber.Left(2) != 86) strNumber = 86 + strNumber; / 填充短消息结构 strcpy(SmParam.SCA, strSmsc); strcpy(SmParam.TPA, strNumber); strcpy(SmParam.TP_UD, strContent); SmParam.TP_PID = 0; SmParam.TP_DCS = GSM_UCS2; / 发送短消息 theApp.m_pSmsTraffic-PutSendMessage(&SmParam); / 列表中加入新串 if(pNumberWnd-FindStringExact(-1, strNumber)InsertString(0, strNumber); if(pContentWnd-FindStringExact(-1, strContent)InsertString(0, strContent); pContentWnd-SetFocus(); pContentWnd-SetEditSel(-1, 0); 13.在mygsm.h中增加包含文件和变量定义: #include SmsTraffic.h public: CSmsTraffic* m_pSmsTraffic; 在类定义之后(即“;”之后)增加: extern CMygsmApp theApp; 14.在工程中增加OnTimer()函数定时显示接收到的短信: 15.点击“Add Function”,再点击“Edit Code”,增加如下代码: if(nIDEvent = 1) /对应3中的SetTimer(1, 1000, NULL) SM_PARAM SmParam; CString strTime; CString strNumber; CString strContent; CListCtrl& ListCtrl = GetListCtrl();/ 取接收到的短消息 if(theApp.m_pSmsTraffic-GetRecvMessage(&SmParam) / 取短消息信息 strNumber = SmParam.TPA; strContent = SmParam.TP_UD; strTime = 20 + CString(&SmParam.TP_SCTS0,2) + - + CString(&SmParam.TP_SCTS2,2) + - + CString(&SmParam.TP_SCTS4,2) + + CString(&SmParam.TP_SCTS6,2) + : + CString(&SmParam.TP_SCTS8,2) + : + CString(&SmParam.TP_SCTS10,2); / 去掉号码前的86 if(strNumber.Left(2) = 86) strNumber = strNumber.Mid(2); / 最多保留200条 int nItemCount = ListCtrl.GetItemCount(); if(nItemCount = 200) ListCtrl.DeleteItem(0); nItemCount-; / 插入新消息 ListCtrl.InsertItem(nItemCount, strNumber); ListCtrl.SetItemText(nItemCount, 1, strTime); ListCtrl.SetItemText(nItemCount, 2, strContent); ListCtrl.EnsureVisible(nItemCount, FALSE); else / other timers CListView:OnTimer(nIDEvent); 16.调制并测试整个程序以实现短信的接收和发送。六、实验数据发送成功:接收成功:七、实验数据分析(对实验结果的评价,误差分析,出现故障的原因及排除方法,回答思考题等) 本次实验符合预期设计要求,由于对开发环境的了解不够深刻,以及粗心等原因,在实验过程中出现了一些在连线、硬件上电开启、文件加载、代码增加、调试上的失误。在老师的悉心指导下我们组终于获得了成功!错误分析:(1) 在连线上要仔细对照连线说明,尤其注意402模块上需要短接的那条线。(2) 在上电后,注意观察指示灯的闪烁,很可能因为SM卡接触、端口线的接触上的问题照成闪烁异常,需要让指示灯保持在4秒闪一次。(3) 在接口波特率和端口的设置上也要注意匹配。(4) 在添加文件时要注意不要重复添加,会照成编译出错。(5) 在添加代码时,注意检查所需要的类是否申明,所不用的代码段是否注释掉。(6) 整体上要注意语法上的错误。八、参考文献九、实验体会(对实验的看法,改进建议等)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论