dialphone.cpp

来自「在配置文件中输入手机拨号序列。模拟手机呼叫。com串口编程」· C++ 代码 · 共 72 行

CPP
72
字号

#include "stdafx.h"
#include "DialPhone.h"
#include "Comm.h"

int gsmSendPhone(char* pSrc)
{
	char cmd[128];		// 命令串
	int ret ;

	sprintf(cmd,"AT+CKPD=\"#31#%s\"\r",pSrc);
	TRACE(cmd);
	ret = WriteComm(cmd, strlen(cmd));	
	

	return 0;
}
int gsmSendDtmf(char* pSrc)
{
	char ans[128];		// 命令串

	sprintf(ans,"AT+VTS=%s\r",pSrc);
	WriteComm(ans, 26);

	sprintf(ans,"AT+VTS=%s\n",pSrc);
	TRACE(ans);
	Sleep(100);
	ReadComm(ans, 128);
	return 0;
}

int gsmSendHungup()
{
	char ans[128];
	WriteComm("ATH\r", 26);
	Sleep(100);
	ReadComm(ans, 128);

	TRACE("ATH\n");
	return 0;
}



// 读取GSM MODEM的应答,可能是一部分
// 输出: pBuff - 接收应答缓冲区
// 返回: GSM MODEM的应答状态, GSM_WAIT/GSM_OK/GSM_ERR
// 备注: 可能需要多次调用才能完成读取一次应答,首次调用时应将pBuff初始化
int gsmGetResponse(SM_BUFF* pBuff)
{
	int nLength;		// 串口收到的数据长度
	int nState;

	// 从串口读数据,追加到缓冲区尾部
	nLength = ReadComm(&pBuff->data[pBuff->len], 128);	
	pBuff->len += nLength;

	// 确定GSM MODEM的应答状态
	nState = GSM_WAIT;
	if ((nLength > 0) && (pBuff->len >= 4))
	{
		if (strstr(pBuff->data, "OK\r\n") != NULL)
			nState = GSM_OK;
		else
			if (strstr(pBuff->data, "+NO CARRIER") != NULL)
				nState = GSM_ERR;
	}
	TRACE(pBuff->data);

	return nState;
}

⌨️ 快捷键说明

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