论坛管理员
|
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;
}
__________________
让世界倾听我们的笛声
|