将待发送的字符串转换成单字节,进行发送buf=new char[strSend.GetLength()*2+1]怎么理解? 为什么长度乘二加一呢?麻烦各位高手指点//发送数据void CSerialSampleDlg::OnBnClickedBtnSend(){char * buf =NULL; //定义发送缓冲区DWORD dwBufLen = 0; //定义发送缓冲区长度CString strSend = L"";//得到发送输入框CEdit *pEdtSendMsg = (CEdit*)GetDlgItem(IDC_EDT_SEND);ASSERT(pEdtSendMsg != NULL);//串口如果没有打开,直接返回if (m_pSerial == NULL){AfxMessageBox(L"串口未打开");return;}//得到待发送的字符串pEdtSendMsg->GetWindowTextW(strSend);//将待发送的字符串转换成单字节,进行发送buf = new char[strSend.GetLength()*2+1];ZeroMemory(buf,strSend.GetLength()*2+1);//转换成单字节进行发送 WideCharToMultiByte(CP_ACP,WC_COMPOSITECHECK,strSend.GetBuffer(strSend.GetLength()),strSend.GetLength(),buf,strSend.GetLength()*2,NULL,NULL);dwBufLen = strlen(buf) + 1;//发送字符串m_pSerial->WriteSyncPort((BYTE*)buf,dwBufLen);//释放内存delete[] buf;buf = NULL;}没看懂为什么要将它转换成单字节来发送,并且长度要乘以2菜鸟一只,请高手指点
- 2 回答
- 0 关注
- 403 浏览
添加回答
举报
0/150
提交
取消