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

📄 wmmpsms.c

📁 在GPRS或者CDMA modem上实现发送/接收短信的C代码;支持Siemens
💻 C
📖 第 1 页 / 共 2 页
字号:
// wmmpsms.cpp : Defines the entry point for the console application.
//

//#include "stdafx.h"

//#include "smscode/sms.h"
//#include "smscode/dataformat.h"
//#include "smscode/typedef.h"
//#include "smscode/xsmsfrm.h"
#include <stdio.h>
#include "sms.h"
#include "dataformat.h"
#include "typedef.h"
#include "xsmsfrm.h"

int send7bitsms(void);
int send8bitsms(void);
int sendunicsms(void);
int checknewsms(void);
int recvanysms(void);

int sendtext7bit(void);
int sendpdu7bit(void);
int sendtext8bit(void);
int sendpdu8bit(void);
int sendtextucs16(void);
int sendpduucs16(void);

SmsHandle hSmsHandle;

int main(int argc, char* argv[])
{
	int ret;
	int input;
	int ifexit;
        uchar csq, berr;
	int smsopen = 0;
		
	printf("Open sms...\n");
	ret = opensms("COM1", &hSmsHandle);
	if (ret < 0)
	{
		WMMP_TRACE(debugType, "\r\nError: opensms");
		printf("Error: opensms\n");
		goto main_fail;
	}
	smsopen = 1;
	printf("Succ to open sms\n");
	printf("Initialize sms...\n");
	ret = initsms(hSmsHandle);
	if (ret < 0)
	{
		WMMP_TRACE(debugType, "\r\nError: initsms");
		goto main_fail;
	}
	printf("Succ to initialize sms\n");

	while (1)
	{
		printf("   Sms Test   \n");
		printf("1.7-bit  2.8-bit 3.UCS2\n");
		printf("4.ifnewsms 5.recvsms\n");
		printf("6.CSQ\n");
		printf("0.exit\n");

		input = getchar();
		ret = getchar();
		switch(input)
		{
		case '1':
			send7bitsms();
			break;
		case '2':
			send8bitsms();
			break;
		case '3':
			sendunicsms();
			break;
		case '4':
			checknewsms();
			break;
		case '5':
			recvanysms();
			break;
		case '6':
			csq = 0;
			ret = testcsq(hSmsHandle, &csq, &berr);
			if (ret == 0)
			{
				printf("Current CSQ: %d\n", csq);
				printf("Current biterr: %d\n", berr);
			}
			else
			{
				printf("Failed to get CSQ\n");
			}
			getchar();
			break;
		case '0':
			ifexit = 1;
			break;
		default:
			break;
		}

		if (ifexit == 1)
		{
			printf("exit sms text\n");
			break;
		}

	}

	ret = closesms(&hSmsHandle);
	if (ret < 0)
	{
		WMMP_TRACE(debugType, "\r\nError: closesms");
		goto main_fail;
	}

	return 0;

main_fail:
	if (smsopen == 1)
	{
        closesms(&hSmsHandle);
	}
    getchar();
    return -1;
}

int send7bitsms(void)
{
	int  ret;
	int inkey, ifexit;

	while (1)
	{
		printf("   Send 7-bit SMS\n");
		printf("1. TEXT   2. PDU\n");
		printf("0. exit send 7-bit sms\n");
        inkey = getchar();
        ret = getchar();
		switch(inkey)
		{
		case '1':
			sendtext7bit();
			break;
		case '2':
			sendpdu7bit();
			break;
		case '0':
			ifexit = 1;
			break;
		default:
			break;
		}

		if (ifexit == 1)
		{
			printf("exit send 7-bit SMS\n");
			break;
		}

	}

	return 0;
}

int sendtext7bit()
{
	int  i, smslen, ret;
	char ch;
	char smsdata[256];
	char number[30];
	SMS_CONFIG smsconfig;
	
	memset(smsdata, 0, sizeof(smsdata));
	printf("Input sms content:\n");
	/* Read in single line from "stdin": */
	for( i = 0; (i < 140) &&  ((ch = getchar()) != EOF) 
		&& (ch != '\n'); i++ )
		smsdata[i] = (char)ch;
	
	/* Terminate string with null character: */
	smsdata[i] = '\0';
	smslen = strlen(smsdata);
	printf("SMS contents:\n%s\n", smsdata);
	
	memset(number, 0, sizeof(number));
	printf("Input peer number:\n");
	
	for( i = 0; (i < 140) &&  ((ch = getchar()) != EOF) 
		&& (ch != '\n'); i++ )
		number[i] = (char)ch;
	number[i] = '\0';
	printf("Peer number: %s\n", number);

	memset(&smsconfig, 0, sizeof(SMS_CONFIG));
	ret = getsmsconfig(hSmsHandle, &smsconfig);
	if (ret < 0)
	{
		printf("Error: get SMS configure");
		goto sendtext7bit_fail;
	}
	if (smsconfig.smstype != SMS_TEXT || smsconfig.smscode != SMS_ENCODE_7BIT)
	{//need to set
        smsconfig.smstype = SMS_TEXT;
        smsconfig.smscode = ENCODE_7BIT;
	}
	ret = setsmsconfig(hSmsHandle, &smsconfig);
	if (ret < 0)
	{
		printf("Error: set SMS configure\n");
		goto sendtext7bit_fail;
	}

	printf("Sending...\n");
	ret = sendsms(hSmsHandle, (uchar*)smsdata, smslen, number);
	if (ret < 0)
	{
		printf("Failed to send SMS\n");
	}
	else
	{
		printf("Succ to send SMS\n");
	}
	getchar();
	return 0;

sendtext7bit_fail:
	return -1;
}

int sendpdu7bit()
{
	int  i, smslen, ret, sms7bitlen;
	char ch;
	char smsdata[256];
	char number[30];
	uchar sms7bitcode[512];
	SMS_CONFIG smsconfig;
	
	memset(smsdata, 0, sizeof(smsdata));
	printf("Input sms content:\n");
	/* Read in single line from "stdin": */
	for( i = 0; (i < 140) &&  ((ch = getchar()) != EOF) 
		&& (ch != '\n'); i++ )
		smsdata[i] = (char)ch;
	
	/* Terminate string with null character: */
	smsdata[i] = '\0';
	smslen = strlen(smsdata);
	printf("SMS contents:\n%s\n", smsdata);
	
	memset(number, 0, sizeof(number));
	printf("Input peer number:\n");
	
	for( i = 0; (i < 140) &&  ((ch = getchar()) != EOF) 
		&& (ch != '\n'); i++ )
		number[i] = (char)ch;
	number[i] = '\0';
	printf("Peer number: %s\n", number);
	
	memset(&smsconfig, 0, sizeof(SMS_CONFIG));
	ret = getsmsconfig(hSmsHandle, &smsconfig);
	if (ret < 0)
	{
		printf("Error: get SMS configure");
		goto sendpdu7bit_fail;
	}
	if (smsconfig.smstype != SMS_PDU || smsconfig.smscode != SMS_ENCODE_7BIT)
	{//need to set
        smsconfig.smstype = SMS_PDU;
        smsconfig.smscode = ENCODE_7BIT;
		smsconfig.pdu.tp_dcs = 0x00;
	}
	ret = setsmsconfig(hSmsHandle, &smsconfig);
	if (ret < 0)
	{
		printf("Error: set SMS configure\n");
		goto sendpdu7bit_fail;
	}
	//encode sms data by 7-bit
	memset(sms7bitcode, 0, sizeof(sms7bitcode));
	smslen = strlen(smsdata);
	ret = convsmsdata((uchar*)smsdata, smslen, sms7bitcode, &sms7bitlen, ENCODE_7BIT);
	if (ret < 0)
	{
		printf("Error: convert sms data by 7-bit coding\n");
		goto sendpdu7bit_fail;
	}
	
	printf("Sending...\n");
	ret = sendsms(hSmsHandle, sms7bitcode, smslen, number);
	if (ret < 0)
	{
		printf("Failed to send SMS\n");
	}
	else
	{
		printf("Succ to send SMS\n");
	}
	getchar();
	return 0;
	
sendpdu7bit_fail:
	return -1;
}

int send8bitsms(void)
{
	int  ret;
	int inkey, ifexit;
	
	while (1)
	{
		printf("   Send 8-bit SMS\n");
		printf("1. TEXT   2. PDU\n");
		printf("0. exit send 8-bit sms\n");
        inkey = getchar();
        ret = getchar();
		switch(inkey)
		{
		case '1':
			sendtext8bit();
			break;
		case '2':
			sendpdu8bit();
			break;
		case '0':
			ifexit = 1;
			break;
		default:
			break;
		}
		if (ifexit == 1)
		{
			printf("exit send 8-bit SMS\n");
			break;
		}
	}
	
	return 0;
}

int sendtext8bit(void)
{
	int  i, smslen, ret, sms8bitlen;
	char ch;
	char smsdata[256];
	char number[30];
//	uchar sms8bitcode[512];
	SMS_CONFIG smsconfig;
	
	memset(smsdata, 0, sizeof(smsdata));
	printf("Input sms content:\n");
	/* Read in single line from "stdin": */
	for( i = 0; (i < 140) &&  ((ch = getchar()) != EOF) 
		&& (ch != '\n'); i++ )
		smsdata[i] = (char)ch;
	
	/* Terminate string with null character: */
	smsdata[i] = '\0';
	smslen = strlen(smsdata);
	printf("SMS contents:\n%s\n", smsdata);
	
	memset(number, 0, sizeof(number));
	printf("Input peer number:\n");
	
	for( i = 0; (i < 140) &&  ((ch = getchar()) != EOF) 
		&& (ch != '\n'); i++ )
		number[i] = (char)ch;
	number[i] = '\0';
	printf("Peer number: %s\n", number);
	
	memset(&smsconfig, 0, sizeof(SMS_CONFIG));
	ret = getsmsconfig(hSmsHandle, &smsconfig);
	if (ret < 0)
	{
		printf("Error: get SMS configure");
		goto sendtext8bit_fail;
	}
	if (smsconfig.smstype != SMS_TEXT || smsconfig.smscode != SMS_ENCODE_8BIT)
	{//need to set
        smsconfig.smstype = SMS_TEXT;
        smsconfig.smscode = SMS_ENCODE_8BIT;
	}
	ret = setsmsconfig(hSmsHandle, &smsconfig);
	if (ret < 0)
	{
		printf("Error: set SMS configure\n");
		goto sendtext8bit_fail;
	}
	//encode sms data by 8-bit
	/*
	memset(sms8bitcode, 0, sizeof(sms8bitcode));
	ret = convsmsdata((uchar*)smsdata, strlen(smsdata), sms7bitcode, &sms7bitlen, SMS_ENCODE_7BIT);
	if (ret < 0)
	{
		printf("Error: convert sms data by 7-bit coding\n");
		goto sendtext8bit_fail;
	}
	*/
	printf("Sending...\n");
	sms8bitlen = strlen(smsdata);
	ret = sendsms(hSmsHandle, (uchar*)smsdata, sms8bitlen, number);
	if (ret < 0)
	{
		printf("Failed to send SMS\n");
	}
	else
	{
		printf("Succ to send SMS\n");
	}
	getchar();
	return 0;
	
sendtext8bit_fail:
	return -1;
}

int sendpdu8bit(void)
{
	int  i, smslen, ret, sms8bitlen;
	char ch;
	char smsdata[256];
	char number[30];
//	uchar sms8bitcode[512];
	SMS_CONFIG smsconfig;
	
	memset(smsdata, 0, sizeof(smsdata));
	printf("Input sms content:\n");
	/* Read in single line from "stdin": */
	for( i = 0; (i < 140) &&  ((ch = getchar()) != EOF) 
		&& (ch != '\n'); i++ )
		smsdata[i] = (char)ch;
	
	/* Terminate string with null character: */
	smsdata[i] = '\0';
	smslen = strlen(smsdata);
	printf("SMS contents:\n%s\n", smsdata);
	
	memset(number, 0, sizeof(number));
	printf("Input peer number:\n");
	
	for( i = 0; (i < 140) &&  ((ch = getchar()) != EOF) 
		&& (ch != '\n'); i++ )
		number[i] = (char)ch;
	number[i] = '\0';

⌨️ 快捷键说明

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