VC++串口程序错误如何解决?
参照电子工业出版社周韧研的书,发现在下面的发送函数中只有第一个字符被送出去,请各位高手帮忙分析一下原因,谢谢!
程序用Cserial类。
void CMFCCommAssistDlg::OnBnClickedBtnSend()
{
// TODO: 在此添加控件通知处理程序代码
CString str;
GetDlgItemText(IDC_EDT_SEND,str);
m_port.Write((LPCSTR)(LPCTSTR)str);
// 用下面一句来测试,所有字符都能被正确发送!
// m_port.Write("Hello World!");
} 为什么是(LPCSTR)(LPCTSTR)? 强制类型转换 你把 m_port.Write((LPCSTR)(LPCTSTR)str);改为: m_port.Write(str.GetBuffer());试试。 如果用的是 ANSI 编码,程序应该没有问题,如果是 Unicode 编码就不行了,应该改为:
CString str;
GetDlgItemText(IDC_EDT_SEND,str);
CStringA strA(str);
m_port.Write((LPCSTR)strA); 按楼上的方法处理,问题解决了,非常感谢!
页:
[1]