《通信实验gobn.docx》由会员分享,可在线阅读,更多相关《通信实验gobn.docx(12页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、一、 实验目的1、了解模块基本功能; 2、了解模块的硬件特性; 3、了解模块的软件特性; 4、了解模块的应用。5、通过编程实现手机短信的收发; 6、加深对VC编程的理解和实践。二、实验内容(含技术指标)移动终端开发VC编程实践短信收发实现,调制并测试整个程序以实现短信的接收和发送。三、 实验仪器(仪器名称、型号、元器件名称、清单、软件名称、版本等)GSM 收发模块SIM300C 模块PC机手机四、 实验原理(基本原理,主要公式,参数计算,实现方法及框图,相关电路等)在GSM于PC端相连接的情况下,通过PC机里的VC软件开发移动终端,并进而通过开发的移动终于,实现模块与测试手机进行短信的手法试验
2、。 GSM 收发模块小系统实现框图及实物连接图如下: 图1-1 GSM 收发模块小系统实现框图 图1-在五、实验步骤(实验关键操作步骤,仪器、电路及器件选择使用,原程序级关键指令注释等)1.在上次的工程中,将所有的CView类修改为CListView类,以显示短信的读取显示功能;即在程序中查找所有的CView,替换为CListView,并且在头文件总添加如下语句: #include 2.利用创建函数: 3.在上图中先点击“Add Function”按钮,再点击“Edit Code”按钮,添加如下代码: CListCtrl& ListCtrl = GetListCtrl(); ListCtrl.
3、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
4、 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对话框上选中“发送”按
5、钮,点击右键选择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 strNum
6、ber; CString strContent; strSmsc = 13800280500; /成都移动短信中心号码,如果是联通请改为13010811500 pNumberWnd-GetWindowText(strNumber); pContentWnd-GetWindowText(strContent); / 检查号码if(strNumber.GetLength() SetFocus(); pNumberWnd-SetEditSel(-1, 0); return; / 检查短消息内容是否空,或者超长CString strUnicode; CStrringg sttrUnnicoode; W
7、CHAAR wwchaar110244; int nCoountt = :MMulttiByyteTToWiideCCharr(CPP_ACCP, 0, strrConntennt, -1, wccharr, 110244); if(nnCouunt SettFoccus(); pConntenntWnnd-SettEdiitSeel(-1, 0); retuurn; elsee iff(nCCounnt 700) / 全全部用UUCS22编码,最最大700个字符符(半角/全角) AfxMMesssageeBoxx(消消息内容容太长,无无法发送送!); pConntenntWnnd-SettF
8、occus(); pConntenntWnnd-SettEdiitSeel(-1, 0); retuurn; if(AAfxMMesssageeBoxx(确确定发送送吗?, MMB_YYESNNO) = IDYYES) SM_PPARAAM SSmPaaramm; memsset(&SmmParram, 0, siizeoof(SSM_PPARAAM); / 去去掉号码码前的+ if(sstrSSmscc0 = +) strrSmssc = sttrSmmsc.Midd(1); if(sstrNNumbber0 = +) sstrNNumbber = sstrNNumbber.Midd(1);
9、 / 在在号码前前加886 if(sstrSSmscc.Leeft(2) != 866) strrSmssc = 886 + sstrSSmscc; if(sstrNNumbber.Lefft(22) != 86) sstrNNumbber = 86 + strrNummberr; / 填填充短消消息结构构strccpy(SmPParaam.SSCA, sttrSmmsc); strccpy(SmPParaam.TTPA, sttrNuumbeer); strccpy(SmPParaam.TTP_UUD, strrConntennt); SmPaaramm.TPP_PIID = 0; SmPa
10、aramm.TPP_DCCS = GSSM_UUCS22; / 发发送短消消息theAApp.m_ppSmssTraaffiic-PuttSenndMeessaage(&SmmParram); / 列列表中加加入新串串if(ppNummberrWndd-FFinddStrringgExaact(-1, sttrNuumbeer)InsserttStrringg(0, sttrNuumbeer); if(ppConntenntWnnd-FinndSttrinngExxactt(-11, sstrCConttentt)InsserttStrringg(0, sttrCoonteent); pCon
11、ntenntWnnd-SettFoccus(); pConntenntWnnd-SettEdiitSeel(-1, 0); 13.在在myggsm.h中增增加包含含文件和和变量定定义:#inccludde SmssTraaffiic.hh publlic:CSmssTraaffiic* m_ppSmssTraaffiic; 在类定义义之后(即即“;”之后)增增加:exteern CMyygsmmAppp thheAppp;14.在在工程中中增加OOnTiimerr()函函数定时时显示接接收到的的短信:15.点点击“Addd Fuuncttionn”,再点点击“Ediit CCodee”,增加加
12、如下代代码:if(nnIDEEvennt = 11) /对应应3中的SeetTiimerr(1, 10000, NUULL) SM_PPARAAM SSmPaaramm; CStrringg sttrTiime; CStrringg sttrNuumbeer; CStrringg sttrCoonteent; CLisstCttrl& LiistCCtrll = GettLisstCttrl();/ 取取接收到到的短消消息if(ttheAApp.m_ppSmssTraaffiic-GettReccvMeessaage(&SmmParram) / 取取短消息息信息strNNumbber = SS
13、mPaaramm.TPPA; strCConttentt = SmPParaam.TTP_UUD; strTTimee = 200 + CSStriing(&SmmParram.TP_SCTTS00,22) + - + CSStriing(&SmmParram.TP_SCTTS22,22) + - + CSStriing(&SmmParram.TP_SCTTS44,22) + + CSStriing(&SmmParram.TP_SCTTS66,22) + : + CSStriing(&SmmParram.TP_SCTTS88,22) + : + CSStriing(&SmmParram.TP_
14、SCTTS110,2); / 去去掉号码码前的86 if(sstrNNumbber.Lefft(22) = 86) sstrNNumbber = sstrNNumbber.Midd(2); / 最最多保留留2000条int nIttemCCounnt = LiistCCtrll.GeetIttemCCounnt(); if(nnIteemCoountt = 2000) ListtCtrrl.DDeleeteIItemm(0); nIteemCoountt-; / 插插入新消消息ListtCtrrl.IInseertIItemm(nIItemmCouunt, sttrNuumbeer); Lis
15、ttCtrrl.SSetIItemmTexxt(nnIteemCoountt, 11, sstrTTimee); ListtCtrrl.SSetIItemmTexxt(nnIteemCoountt, 22, sstrCConttentt); ListtCtrrl.EEnsuureVVisiiblee(nIItemmCouunt, FAALSEE); elsee / ootheer ttimeers CLisstViiew:OnnTimmer(nIDDEveent); 16.调调制并测测试整个个程序以以实现短短信的接接收和发发送。六、实验验数据发送成功功:接收成功功:七、实验验数据分分析(对对实
16、验结结果的评评价,误误差分析析,出现现故障的的原因及及排除方方法,回回答思考考题等)本次实验验符合预预期设计计要求,由由于对开开发环境境的了解解不够深深刻,以以及粗心心等原因因,在实实验过程程中出现现了一些些在连线线、硬件件上电开开启、文文件加载载、代码码增加、调调试上的的失误。在在老师的的悉心指指导下我我们组终终于获得得了成功功!错误分析析:(1) 在连线上上要仔细细对照连连线说明明,尤其其注意4402模模块上需需要短接接的那条条线。(2) 在上电后后,注意意观察指指示灯的的闪烁,很很可能因因为SMM卡接触触、端口口线的接接触上的的问题照照成闪烁烁异常,需需要让指指示灯保保持在44秒闪一一次
17、。(3) 在接口波波特率和和端口的的设置上上也要注注意匹配配。(4) 在添加文文件时要要注意不不要重复复添加,会会照成编编译出错错。(5) 在添加代代码时,注注意检查查所需要要的类是是否申明明,所不不用的代代码段是是否注释释掉。(6) 整体上要要注意语语法上的的错误。八、参考考文献九、实验验体会(对对实验的的看法,改改进建议议等)通过本次次试验,在在我们多多次的失失败与尝尝试中并并在老师师的悉心心指导下下,让我我们组的的学员都都了解模模块基本本功能、模模块的硬硬件特性性、软件件特性及及其应用用,通过过VC+开发发软件实实现了手手机短信信的收发发,更让让我们加加深了对对通信原原理、VVC编程程的理解解和实践践!改进建议议:希望望能在试试验步骤骤中加上上一些关关键的需需要添加加的操作作,或者者加些启启示性的的提示,以以减少学学员在试试验中测测试摸索索的时间间,从而而更快更更好的掌掌握试验验内容,增增强试验验的可操操作性。也也希望能能适当增增加试验验机位,以以减少每每组的成成员,让让更多的的同学能能有实地地性的锻锻炼和提提高。