我微软的控件能够发送中文短信,但是我使用api发送相同内容到手机确返回pdu格式错误,请高手指点
我的代码:
正常:
m_com.SetCommPort(4);//Com1串行口
m_com.SetSettings("115200,n,8,1");//设置波特率为9600bps,无奇偶校验位,数据位8位,停止位1位
m_com.SetInputMode(1);//设置数据通讯格式为二进制数组格式
m_com.SetRThreshold(1);//设置为每次接到一个字节数据就触发OnComm事件
if(!m_com.GetPortOpen())
{
m_com.SetPortOpen(TRUE);
}
m_SendData="at+CMGF=0\r";//
m_com.SetOutput(COleVariant(m_SendData));
char data[2048];
test.EncodeData(true,"133000000","测试成功", data);
m_SendData=data;//调制解调器初始化
m_com.SetOutput(COleVariant(m_SendData));
返回pdu错误:
char data[2048];
int datalen = EncodeData(TRUE,"1330000000","测试成功",data);
cs->SendData(data,datalen);SendData函数
BOOL CSerial::SendData(const char *buffer, int size )
{
PurgeComm(m_hIDComDev,PURGE_RXABORT|PURGE_RXCLEAR);
DWORD dwNumByteWritten; if(!WriteFile(m_hIDComDev,buffer,size,&dwNumByteWritten,NULL))
{
DWORD dwError = GetLastError();
return FALSE;
}
return TRUE;}
我的代码:
正常:
m_com.SetCommPort(4);//Com1串行口
m_com.SetSettings("115200,n,8,1");//设置波特率为9600bps,无奇偶校验位,数据位8位,停止位1位
m_com.SetInputMode(1);//设置数据通讯格式为二进制数组格式
m_com.SetRThreshold(1);//设置为每次接到一个字节数据就触发OnComm事件
if(!m_com.GetPortOpen())
{
m_com.SetPortOpen(TRUE);
}
m_SendData="at+CMGF=0\r";//
m_com.SetOutput(COleVariant(m_SendData));
char data[2048];
test.EncodeData(true,"133000000","测试成功", data);
m_SendData=data;//调制解调器初始化
m_com.SetOutput(COleVariant(m_SendData));
返回pdu错误:
char data[2048];
int datalen = EncodeData(TRUE,"1330000000","测试成功",data);
cs->SendData(data,datalen);SendData函数
BOOL CSerial::SendData(const char *buffer, int size )
{
PurgeComm(m_hIDComDev,PURGE_RXABORT|PURGE_RXCLEAR);
DWORD dwNumByteWritten; if(!WriteFile(m_hIDComDev,buffer,size,&dwNumByteWritten,NULL))
{
DWORD dwError = GetLastError();
return FALSE;
}
return TRUE;}
解决方案 »
- 问:多线程中调用控制台调试输出窗口提示内存错误,但主线程调用调试输出则没有异常。
- 获取网页邮件在本机上的内容
- 关于文件夹遍历的问题,请大家帮忙解决一下
- 如何定位所有程序的窗口
- 文件读写问题
- WIN32下客户端如何连接服务器
- 求救,急!!!
- 动态改变编辑框文本颜色和背景颜色的问题,搜了半天还是不明白
- 打开串口函数mHandle = CreateFile(lpszPort,GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING,LpOverlappend,0);
- 问个应该是菜的问题,怎么不知道如何做了呢?呵呵~~~~
- IMPLEMENT_SERIAL 展开后的 困惑 ;高手帮帮我,小弟先谢了
- 请问哪个类函数能够得到程序运行的时间??
改个类名吧,这个好像和MuMega Technologies公司提供的一个免费的VC++类重名,看看你的机器上是不是已经有这个类了
{ COMSTAT ComStat;
LPDWORD ComError; DWORD dwNumByteWritten = 0; ClearCommBreak(m_hIDComDev);
ClearCommError(m_hIDComDev,ComError,&ComStat); PurgeComm(m_hIDComDev,PURGE_TXCLEAR); //清空发送缓冲区
if(!WriteFile(m_hIDComDev, (LPSTR)CommData, size, &length, &m_OverlappedWrite))
{
DWORD dwError = GetLastError();
return FALSE;
} if (WaitForSingleObject(m_OverlappedWrite.hEvent, 1000))
dwNumByteWritten = 0;
else
{
GetOverlappedResult(m_hIDComDev, &m_OverlappedWrite, &length, FALSE);
m_OverlappedWrite. Offset += dwNumByteWritten;
}
return TRUE;
}