最近在写一个串口通讯的程序,其中有一个功能是:手机发送短信给GSM 然后我通过mscomm控件来接收短信。现在我遇到了一个问题,我这里采用事件触发机制的,当在缓存里有字符串的时候就会触发oncomm事件,然后通过一个commenvnt属性来判断事件。的那个返回值是2的时候,就说明缓存有字符串来了,但是我这里每次发短信过来的时候这个返回值一直是6.然后我查过了,ComEvRing返回值是 6 表示检测到响铃信号 这我就郁闷了,我明明是发送短信。然后我继续调用input函数来取得缓存里的数据,然后也是得不到,得到的长度是0。表示里面没有数据,是空的。这我更加郁闷了。因为我用超级终端调试过gsm模块。当短信发过来的时候,超级终端上会显示+SMIT。等提示信息。这难道不是数据么。 于是我想了很久,我觉得他那里显示的是 检测到响铃信号,是不是就是说+SMIT。这些字符串是超级终端经过处理的,事实上GSM发给电脑的就是一个信号,然后通过这个信号来再发送at指令。然后才是真正的短信内容发到端口。然后commevent的返回值才会是2! 以上是我遇到的问题 和我目前对这个问题的初步理解。由于是初学者,更何况这个串口通讯也刚刚接触,以上有一些表述上的错误和理解上的错误希望大家多多包容,有什么好的建议,希望能回个帖子,谢谢各位了!
解决方案 »
- 如何让程序在系统启动前,启动时运行。并且让其它软件在程序执行完成后才执行
- 北京计算机书籍全部四折出售,截止时间2006-2-18日
- 我想把程序的界面做成windows样的,怎么做!
- 问个操作数据库问题
- 》??如何给Dgrid控件对象设置数据源??《
- 各位,帮帮我,我不明白为什么我的窗体使用了MSFLEXGRID控件,就不能打开呢?
- 请教一个设备操作的问题
- 初学线程。有关多线程中的消息泵问题:
- ATL::CStringA(cidBuffer, ReadCallId(reinterpret_cast<BYTE *>(cidBuffer)));改成MFC?
- 急!!!!求教 DUILib 开源库的一些问题
- 修改网络上的程序BitZam,程序能执行却无法实现BT下载
- vs2010 Ctrl+shift+x向导快捷键不好使,为什么
{
// TODO: 在此处添加消息处理程序代码
VARIANT variant_inp;
COleSafeArray safearray_inp;
LONG len,k;
BYTE rxdata[2048];
CString strtemp,change;
int kk=m_CtrlCom1.get_CommEvent();
if (kk)
{
variant_inp=m_CtrlCom1.get_Input();
safearray_inp=variant_inp;
len=safearray_inp.GetOneDimSize();
for (k=0;k<len;k++)
{
safearray_inp.GetElement(&k,rxdata+k);
}
for (k=0;k<len;k++)
{
BYTE bt=*(char*)(rxdata+k);
strtemp.Format(L"%c",bt);
m_EditCom1Rev+=strtemp;
}
}此处是这样的,我调试的时候看来一下kk这个值,也就是commevent属性的返回值。他的值是6. 当然我在电脑上模拟的两个串口上进行通讯的时候他的值是2. 也就是我所期望的值。 但是和gsm通讯的时候确实6. 好了问题就是这样~