CDMA 发送短信实例
SendMMS()
http://blog.vckbase.com/Images/Outli...BlockStart.gifhttp://blog.vckbase.com/Images/Outli...actedBlock.gifhttp://blog.vckbase.com/Images/dot.gif{
http://blog.vckbase.com/Images/Outli...rs/InBlock.gif HANDLE hCom = CreateFile( _T("COM1"),
http://blog.vckbase.com/Images/Outli...rs/InBlock.gif GENERIC_READ | GENERIC_WRITE,
http://blog.vckbase.com/Images/Outli...rs/InBlock.gif 0, NULL, OPEN_EXISTING, 0, NULL );
http://blog.vckbase.com/Images/Outli...rs/InBlock.gif if( NULL == hCom ) returnfalse;
http://blog.vckbase.com/Images/Outli...rs/InBlock.gif
http://blog.vckbase.com/Images/Outli...rs/InBlock.gif DCB dcb;
http://blog.vckbase.com/Images/Outli...rs/InBlock.gif ::GetCommState( hCom, &dcb );
http://blog.vckbase.com/Images/Outli...rs/InBlock.gif dcb.BaudRate =9600;
http://blog.vckbase.com/Images/Outli...rs/InBlock.gif dcb.ByteSize =8;
http://blog.vckbase.com/Images/Outli...rs/InBlock.gif dcb.Parity = NOPARITY;
http://blog.vckbase.com/Images/Outli...rs/InBlock.gif dcb.StopBits = ONESTOPBIT;
http://blog.vckbase.com/Images/Outli...rs/InBlock.gif
http://blog.vckbase.com/Images/Outli...rs/InBlock.gif if( !::SetCommState( hCom, &dcb ) ) returnfalse;
http://blog.vckbase.com/Images/Outli...rs/InBlock.gif if( !::PurgeComm( hCom, PURGE_RXCLEAR ) ) returnfalse;
http://blog.vckbase.com/Images/Outli...rs/InBlock.gif
http://blog.vckbase.com/Images/Outli...rs/InBlock.gif DWORD dw;
http://blog.vckbase.com/Images/Outli...rs/InBlock.gif ::WriteFile( hCom, "AT\r", 3, &dw, NULL );
http://blog.vckbase.com/Images/Outli...rs/InBlock.gif // 读串口,判断是否正常
http://blog.vckbase.com/Images/Outli...rs/InBlock.gif // 切换到中文短信方式
http://blog.vckbase.com/Images/Outli...rs/InBlock.gif ::WriteFile( hCom, "AT+WSCL=6,4\r", 12, &dw, NULL );
http://blog.vckbase.com/Images/Outli...rs/InBlock.gif // 读串口,判断是否正常
http://blog.vckbase.com/Images/Outli...rs/InBlock.gif
http://blog.vckbase.com/Images/Outli...rs/InBlock.gif ::WriteFile( hCom, "AT+CMGF=1\r", 10, &dw, NULL );
http://blog.vckbase.com/Images/Outli...rs/InBlock.gif // 读串口,判断是否正常
http://blog.vckbase.com/Images/Outli...rs/InBlock.gif
http://blog.vckbase.com/Images/Outli...rs/InBlock.gif WCHAR wszTxt[500];
http://blog.vckbase.com/Images/Outli...rs/InBlock.gif ::wcscpy( wszTxt, L"hello 你好" );
http://blog.vckbase.com/Images/Outli...rs/InBlock.gif
http://blog.vckbase.com/Images/Outli...rs/InBlock.gif int len = (int)::wcslen(wszTxt);// 字符长度
http://blog.vckbase.com/Images/Outli...rs/InBlock.giffor( int i=0; i<len; i++ ) // 交换高低字节
http://blog.vckbase.com/Images/Outli...rs/InBlock.gif wszTxt[i] = MAKEWORD( HIBYTE(wszTxt[i]), LOBYTE(wszTxt[i]) );
http://blog.vckbase.com/Images/Outli...rs/InBlock.gif
http://blog.vckbase.com/Images/Outli...rs/InBlock.gif char szNumber[50]; // 手机号码,内容长度
http://blog.vckbase.com/Images/Outli...rs/InBlock.gif ::sprintf( szNumber, "AT+CMGS=\"13901112233\",%d\r", len*2 );
http://blog.vckbase.com/Images/Outli...rs/InBlock.gif ::WriteFile( hCom, szNumber, (DWORD)::strlen( szNumber ), &dw, NULL );
http://blog.vckbase.com/Images/Outli...rs/InBlock.gif ::Sleep(500);
http://blog.vckbase.com/Images/Outli...rs/InBlock.gif
http://blog.vckbase.com/Images/Outli...rs/InBlock.gif ::WriteFile( hCom, wszTxt, len*2, &dw, NULL );
http://blog.vckbase.com/Images/Outli...rs/InBlock.gif ::WriteFile( hCom, "\x00\x1a\r", 3, &dw, NULL ); // 结束符
// 读串口,判断是否正常
::CloseHandle( hCom );
return true;
}
|