既然是读变量的话然后程序就自动关闭了,有可能是引用内存错误,你先去看看这个变量是指针变量还是数值变量..追问:我改怎么看?拜托大侠指点迷津。回答:去看看DLL调用命令,要不你就说说你调用的是哪一个
函数吧..追问:这是开发文档我不知道我哪里写错了。短信动态库说明1对外接口函数说明一,启动服务int_stdcallSMSStartService(intnPort,DWORDBaudRate=57600,intParity=2,intDataBits=8,intStopBits=0,intFlowControl=0,char*csca="card")
参数:nPort串口号如1则表示COM1BaudRate拨特率115200Parity校验位2DataBits数据位8StopBits停止位0FlowControl流控制0Csca短信中心号码,可以使用默认值,若设置则格式如:”+8613800591500”返回值:1成功,0失败二,发送短消息DWORD_stdcallSMSSendMessage(char*Msg,char*PhoneNo)参数:Msg消息内容,如果为中文则一条最多70个字,多于70个字分多条短信发送如果全为英文则一条最多为140个字符,多余于140则分多条发送PhoneNo目标号码格式如“13800591500”返回值无意义,查询短信成功与否请调用函数四三,接收短消息int_stdcallSMSGetNextMessage(SMSMessageStruct*Msg)结构体类如下typedefstruct_sms_msg_t_{charMsg[256]//短信内容charPhoneNo[32]//对方手机号码charReceTime[32]//接收时间}SMSMessageStruct参数Msg读取的短消息返回1有短信0无四,查询发送状态报告int_stdcallSMSReport(SMSReportStruct*rept)五,停止服务int_stdcallSMSStopSerice()六,最近一次错误int_stdcallSMSGetLastError(char*err)参数err为错误内容返回错误长度2调用方法以及用例2.1.1声明//消息结构体类型声明typedefstruct_sms_msg_t_{charMsg[256]//短信内容charPhoneNo[32]//对方手机号码charReceTime[32]//接收时间}SMSMessageStruct//消息状态报告结构体类型声明typedefstruct_sms_report_t_{DWORDindex//短消息编号:index,从0开始递增charMsg[256]//短信内容intSuccess//是否发送成功0为失败,非0为成功charPhoneNo[32]//目标手机号码}SMSReportStruct//启动服务函数类型说明typedefint(_stdcall*pSMSStartServiceFun)(intnPort,DWORDBaudRate=57600,intParity=2,intDataBits=8,intStopBits=0,intFlowControl=0,char*csca="card")//读取短信函数类型说明typedefint(_stdcall*pSMSGetNextMessageFun)(SMSMessageStruct*Msg)//发送消息类型说明typedefDWORD(_stdcall*pSMSSendMessageFun)(char*Msg,char*PhoneNo)//读取状态报告类型说明typedefint(_stdcall*pSMSReportFun)(SMSReportStruct*rept)//停止服务函数类型说明typedefint(_stdcall*pSMSStopSericeFun)()2.1.2调用过程HINSTANCEhDll=LoadLibrary("MC8331AT.dll")//调用程序目录下须要有此动态库文件pSMSSendMessageFunSMSSendMessageFun//函数定义SMSSendMessageFun=(pSMSSendMessageFun)GetProcAddress(hDll,"SMSSendMessage")//获取函数指针If(SMSSendMessageFun!=NULL)SMSSendMessageFun(“短信内容”,“手机号码”)//发送短信FreeLibrary(hDll)//释放动态库3备注1,SMSStartService和SMSStopSerice应该配对出现,在程序退出之前一定要释放资源2,SMSGetNextMessage这个需要一个定时器和线程来管理。如果短信多了而不调用此函数,新的短信会覆盖以前的未读取短信回答:能不能留个联系方式,这样方便点..追问:下面是我写的代码,请高人帮我看看。.版本2.支持库spec.程序集窗口程序集1.程序集变量ID,
整数型.子程序_按钮1_被单击.判断开始(启动服务(2,115200,2,8,0,0,“+8613800898500”)=1)信息框(“启动成功”,0,)时钟1.时钟周期=100按钮1.禁止=真按钮2.禁止=假.默认信息框(“启动失败”,0,)时钟1.时钟周期=0按钮1.禁止=假按钮2.禁止=真.判断结束.子程序_按钮2_被单击.判断开始(停止服务()=1)信息框(“关闭成功”,0,)按钮1.禁止=假按钮2.禁止=真.默认信息框(“关闭失败”,0,)按钮1.禁止=真按钮2.禁止=假.判断结束.子程序_按钮3_被单击ID=发送短消息.子程序_时钟1_周期事件.局部变量收到消息,SMSMessageStruct.局部变量发送状态,消息报告.如果真(查询发送状态报告(发送状态)=1)调试输出(发送状态.返回结果)调试输出(发送状态.目标手机号码)调试输出(发送状态.内容).如果真结束.版本2.数据类型SMSMessageStruct,,消息结构体.成员Msg,文本型,,,//短信内容.成员PhoneNo,文本型,,,//对方手机号码.成员ReceTime,文本型,,,//接收时间.数据类型消息报告,公开,消息状态报告结构体.成员索引,长整数型.成员内容,文本型.成员返回结果,逻辑型.成员目标手机号码,文本型.版本2.DLL命令启动服务,整数型,"SMSDLL.dll","SMSStartService",,返回值:1成功,0失败.参数nPort,整数型,,串口号如1则表示COM1.参数BaudRate,整数型,,拨特率115200.参数Parity,整数型,,校验位2.参数DataBits,整数型,,数据位8.参数StopBits,整数型,,停止位0.参数FlowControl,整数型,,流控制0.参数Csca,文本型,,短信中心号码,可以使用默认值,若设置则格式如:"+8613800591500".DLL命令发送短消息,整数型,"SMSDLL.dll","SMSSendMessage",,返回值无意义,查询短信成功与否请调用函数四.参数Msg,文本型,,消息内容.参数PhoneNo,文本型,,目标号码格式如"13800591500".DLL命令接收短消息,整数型,"SMSDLL.dll","SMSGetNextMessage",,返回1有短信0无.参数Msg,SMSMessageStruct.DLL命令查询发送状态报告,整数型,"SMSDLL.dll","SMSReport".参数rept,消息报告,传址.DLL命令停止服务,整数型,"SMSDLL.dll","SMSStopSerice".DLL命令最近一次错误,整数型,"SMSDLL.dll","SMSGetLastError",,返回错误长度.参数err,文本型,,错误内容回答:具体在哪一个地方出现错误了..追问:你 多少我加你。在时钟读接收信息变量里的内容的时候软件就自动关闭了回答:283779332,麻烦你在验证的时候写上来自问问吧,,MESNumber(1 To 50) As String * 500 '新消息的位置
MESNumber定义成1TO50的范围,检查是否小于或超过这个范围
特别要注意是否有0的情况.
因为你没有贴出函数ReadMSG的代码,就没有办法判断是否在这个函数体中造成的数组越界的问题.
评论列表(0条)