⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 modemproc.cpp

📁 采用cb平台开发
💻 CPP
字号:
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "modemproc.h"
#include "UartPort.h"
#include "modem.h"
//---------------------------------------------------------------------------

#pragma package(smart_init)

char callnumber[100];
char PackageData[2048];
unsigned int Packagesize=0;
//---------------------------------------------------------------------------
void SetDialNumber(char *number)
{
    int length=strlen(number)+1;
    memcpy(callnumber,number,length);
}

void SigninPackage(int sendsize,char *sbuf)
{
    Packagesize=sendsize;
    memcpy(PackageData,sbuf,sendsize);
}

void ModemProc()
{
    char * sbuffer=NULL;
    char mode,ensync,cres;
    unsigned char msg[100];
    unsigned char rbuffer[2048];
    int i, len,sendnum,j;

    len=Packagesize;
    sbuffer=PackageData;

    memset(msg, 0,sizeof(msg));

    DebugPrint("开始拨号...\r\n");

    mode=BEFOREHAND_DIAL;

    cres=ModemDial(callnumber, mode);
    if (cres)
    {
        AnsiString as;
        as=as.sprintf("设定modem参数失败。cres=%d\r\n",cres);
        DebugPrint(as.c_str());
        return;
    }

	cres=ModemState();
	ensync=1;
	while(mode)
	{
		cres=ModemState();
		if (cres==STA_SYNC_GO&&ensync)
		{
			DebugPrint("拨号成功,开始同步...\r\n");
			ensync=0;
		}

		if (cres==STA_LINE_IDLE||
			cres==STA_DIAL_FAIL||
			cres==STA_SYNC_FAIL||
            cres==STA_LINE_OFF||
			cres==STA_NO_CCARRIER)
			break;
		//--------------------------------
	};
    if (cres==STA_LINE_IDLE)
    {
        DebugPrint("modem同步完成。\r\n");
    }
    else if (cres==STA_DIAL_FAIL||cres==STA_LINE_OFF)
    {
        DebugPrint("modem拔号失败。\r\n");
    }
    else if (cres==STA_SYNC_FAIL)
    {
        DebugPrint("modem同步失败。\r\n");
    }
    else if (cres==STA_NO_CCARRIER)
    {
        DebugPrint("无载波\r\n");
    }

    if (cres==STA_LINE_IDLE)
    {
        //----------------------------------------------
        sendnum=2;
        //----------------------------------------------
        for (j=0;j<sendnum;j++)
        {
            //发送签到包
            //------------------------------------------
            AnsiString as;
            as=as.sprintf("发第%d个包: ",j+1);
            DebugPrint(as.c_str());

            cres=ModemSend(sbuffer, len);
            if (cres==SEND_SUCCESSFUL)
            {
                DebugPrint("成功\r\n");
            }
            else if (cres==SEND_ERROR_LENGTH)
            {
                DebugPrint("超长了\r\n");
            }
            else if (cres==SEND_LINE_OFF)
            {
                DebugPrint("掉线了\r\n");
            }
            else if (cres==TIME_OVERFLOW)
            {
                DebugPrint("时间溢出\r\n");
            }
            else if (cres==STA_SEND_FAIL)
            {
                DebugPrint("发送3次失败\r\n");
            }
            else if (cres==SEND_UNRIPE)
            {
                DebugPrint("未准备好\r\n");
            }

            //------------------------------------------
            if (cres!=SEND_SUCCESSFUL)
                continue;
            as=as.sprintf("收第%d个包: ",j+1);
            DebugPrint(as.c_str());

            memset(rbuffer, 0, sizeof(rbuffer));
            cres=ModemRecv(rbuffer, (unsigned short *)(&i),500);	//300:预计要接收的字节数
            if (cres==REC_SUCCESSFUL)
            {
                DebugPrint("成功\r\n");
            }
            else if (cres==REC_LINE_OFF)
            {
                DebugPrint("掉线了\r\n");
            }
            else if (cres==TIME_OVERFLOW)
            {
                DebugPrint("时间溢出\r\n");
            }
            //------------------------------------------
            cres=ModemState();
            if (cres==STA_LINE_DATAOFF||cres==STA_LINE_OFF||cres==STA_NO_CCARRIER)
                break;

        }
        //----------------------------------------------
        DebugPrint("挂机中... \r\n");

        cres=ModemHook();
        if(cres!=0x00)
        {
            DebugPrint("挂机操作失败。\r\n");
        }
        else
        {
            DebugPrint("挂机操作成功。\r\n");
        }
        //----------------------------------------------
    }
}
//---------------------------------------------------------------------------

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -