南京师范大学硕士学位论文
while(1)
(
SendBufToUARTl(at,2);I
SendBufToUARTl(enter,2);
if(iRecvSignl>=1)
f
Delay(DELAYl0MS★i0);
iRecvDataNuml=SioReaduARTl(iRecvBufl,i00);
SendBufToUART0(iRecvBufl,iRecvDataNuml);
iRecvSignl=0;
}
}
69、70句实现向WaveCom模块发送一个AT指令:AT<CR>,72"---78句是实现从WaveCom模块接收反馈信息,并将反馈信息通过串口0发到上位机。理论上应该返回AT<CR><CR>OK<CR>,从下图可以看到,反馈的信息是不正确的。
fj熟鬻翟jI:;。ATT
|糍箍位涉葫两习{};盯
}数据位旷—习降K
l停止位11 ■}|ioK
}黟囊。关闭串四臻;|;ioK
鼍煮景芝—瓮警霪耄耄三型j{oK
.鎏塞鎏堕匿爹}-“耩嵌鬣r凋磐两翼嚣藜薯瓣鬻产
『_瀵藜壤捌霉带t一:。j缚3K..i熊垂签缝。|毽剖i瓣甄霹孥霪蒸雾
,凌覆鬻Ij誊攀攀鬻洳一攀鬃曩…。i。答一jij譬i二};;1|
问题分析:当程序发完AT<CR>时,立即检测if(iRewSignl>=1)这一句,当
ARM从WaveCom模块收到第一个返回字节时,若是UARTl的波特率位115200bps,
则收到一个字节的时间为1/115200×8s。当收到一个字节后,UARTl的中断才会被响应,此时iRewSignl才会加1,而在此之前if(iRewSignl>=1)判断非真,程序再次折回到While(1)处开始执行,69、70两句又执行了一次,即又发了一个AT<CR>
指令,如此循环,在响应UARTl中断之前,ARM已给GPRS模块发出了若干个AT
<cl◇指令了,所以会发生返回信息AT<CR>AT<CR>AT<CR>AT<CR>OK<CR>OK
<CI◇OK<CR>OK<CR>AT<CR>AT<CR>OK<CR>0K<CR>的交替现象。把第74句移到71句处,问题就解决了。
5.6系统测试图5—25所示是已经研制成功的“变电站综合自动化模拟系统”,图5.26是远程南京师范大学硕士学位论文监控装置,通过RS232与该系统连接。
图5.25变电站自动化模拟系统 图5-26远程监控装置图5—27、5.28、5.29是该系统的菜单界面,5—30、5.31所示分别为采集到的电压量和电流量。
图5-27菜单1
图5-29菜单3
图5-28菜单2
52
图5.30采集到的电压量南京师范大学硕士学位论文图5-31采集到的电流量以上各图均是系统运行时实际拍摄,系统功能完全正常,系统运行稳定可靠,达到预期的设计目标。