查看单个帖子
旧 2012-08-24   #1 (permalink)
admin
论坛管理员
 
admin 的头像
 
注册日期: 2009-06-30
帖子: 861
admin 的声望功能已被禁用
默认 CDMA 发送短信实例

SendMMS()
{
HANDLE hCom
= CreateFile( _T("COM1"),
GENERIC_READ
| GENERIC_WRITE,
0, NULL, OPEN_EXISTING, 0, NULL );
if( NULL == hCom ) returnfalse;

DCB dcb;
::GetCommState( hCom,
&dcb );
dcb.BaudRate
=9600;
dcb.ByteSize
=8;
dcb.Parity
= NOPARITY;
dcb.StopBits
= ONESTOPBIT;

if( !::SetCommState( hCom, &dcb ) ) returnfalse;
if( !::PurgeComm( hCom, PURGE_RXCLEAR ) ) returnfalse;

DWORD dw;
::WriteFile( hCom,
"AT\r", 3, &dw, NULL );
// 读串口,判断是否正常
// 切换到中文短信方式
::WriteFile( hCom, "AT+WSCL=6,4\r", 12, &dw, NULL );
// 读串口,判断是否正常

::WriteFile( hCom,
"AT+CMGF=1\r", 10, &dw, NULL );
// 读串口,判断是否正常

WCHAR wszTxt[
500];
::wcscpy( wszTxt, L
"hello 你好" );

int len = (int)::wcslen(wszTxt);// 字符长度
for( int i=0; i<len; i++ ) // 交换高低字节
wszTxt[i] = MAKEWORD( HIBYTE(wszTxt[i]), LOBYTE(wszTxt[i]) );

char szNumber[50]; // 手机号码,内容长度
::sprintf( szNumber, "AT+CMGS=\"13901112233\",%d\r", len*2 );
::WriteFile( hCom, szNumber, (DWORD)::strlen( szNumber ),
&dw, NULL );
::Sleep(
500);

::WriteFile( hCom, wszTxt, len
*2, &dw, NULL );
::WriteFile( hCom,
"\x00\x1a\r", 3, &dw, NULL ); // 结束符
// 读串口,判断是否正常

::CloseHandle( hCom );
return true;
}
__________________

让世界倾听我们的笛声
admin 当前离线   回复时引用此帖