我用一个mscomm控件分别定义了对com1串口的发送和接受,但是接受的信息显在编辑控件中示不出来?
void CComSerDlg::OnBnClickedButtonSend()
{
// TODO: 在此添加控件通知处理程序代码
UpdateData(TRUE);
UpdateData(FALSE); char TxData[100];
int Count = m_strSend.GetLength(); for(int i = 0; i < Count; i++)
TxData[i] = m_strSend.GetAt(i);
CByteArray array;
array.RemoveAll();
array.SetSize(Count); for(i=0;i<Count;i++)
array.SetAt(i, TxData[i]); m_Com.put_Output(COleVariant(array)); // 发送数据 void CComSerDlg::OnCommMscomm()
{
// TODO: 在此处添加消息处理程序代码
VARIANT vResponse;
char *str;
char *str1;
int k, nEvent, i; nEvent = m_Com.get_CommEvent(); switch(nEvent)
{
case 2: //收到大于RTHresshold个字符
k = m_Com.get_InBufferCount(); //接收到的字符数目
if(k > 0)
{
vResponse=m_Com.get_Input(); //read
//对数据进行其他处理
str = (char*)(unsigned char*) vResponse.parray->pvData;
}
// 接收到字符,MSComm控件发送事件
i = 0;
str1 = str;
while (i < k)
{
i++;
str1++;
}
*str1 = '\0';
m_strReceive = (const char *)str;
//清除字符串中的不必要字符
break;
} UpdateData(FALSE);
m_nEdit.Invalidate();
}
}
void CComSerDlg::OnBnClickedButtonSend()
{
// TODO: 在此添加控件通知处理程序代码
UpdateData(TRUE);
UpdateData(FALSE); char TxData[100];
int Count = m_strSend.GetLength(); for(int i = 0; i < Count; i++)
TxData[i] = m_strSend.GetAt(i);
CByteArray array;
array.RemoveAll();
array.SetSize(Count); for(i=0;i<Count;i++)
array.SetAt(i, TxData[i]); m_Com.put_Output(COleVariant(array)); // 发送数据 void CComSerDlg::OnCommMscomm()
{
// TODO: 在此处添加消息处理程序代码
VARIANT vResponse;
char *str;
char *str1;
int k, nEvent, i; nEvent = m_Com.get_CommEvent(); switch(nEvent)
{
case 2: //收到大于RTHresshold个字符
k = m_Com.get_InBufferCount(); //接收到的字符数目
if(k > 0)
{
vResponse=m_Com.get_Input(); //read
//对数据进行其他处理
str = (char*)(unsigned char*) vResponse.parray->pvData;
}
// 接收到字符,MSComm控件发送事件
i = 0;
str1 = str;
while (i < k)
{
i++;
str1++;
}
*str1 = '\0';
m_strReceive = (const char *)str;
//清除字符串中的不必要字符
break;
} UpdateData(FALSE);
m_nEdit.Invalidate();
}
}
我知道了,原来对同一com口读写时要把RxD和TxD用导线短接