MSCOMM控件的comm口的RThreshold设置是1,但input的时候是很多个字符,这是怎么回事?
voidCModBus_RTUDlg::OnOnCommMscomm1(){//TODO:Addyourcontrolnotificationhandlercodeher...
void CModBus_RTUDlg::OnOnCommMscomm1()
{
// TODO: Add your control notification handler code here\
//串口接收处理函数
VARIANT vInput;
COleSafeArray svInput;
LONG len,k;
char RXDATA[1024];
CString sTemp;
switch (m_MSComm.GetCommEvent())
{
case 2://串口接收正常数据处理
m_MSComm.SetRThreshold(0);//RThreshold=0 ;
vInput=m_MSComm.GetInput();
svInput=vInput;
len=svInput.GetOneDimSize();
for(k=0;k<len;k++)
svInput.GetElement(&k,&RXDATA[k]);
/*
for (k=0;k<len;k++)
{
sTemp.Format("%c",RXDATA[k]);
m_sRxData+=sTemp;
}*/
RxCount=RxCount+1;
m_MSComm.SetRThreshold(1);
m_Status.SetWindowText(m_sRxData);
UpdateData(FALSE);
m_sRxData="";
break;
}
}
串口设置如下
m_MSComm.SetCommPort(3);
m_MSComm.SetInBufferSize(1024);
m_MSComm.SetOutBufferSize(512);
m_MSComm.SetInputMode(1);
m_MSComm.SetSettings("9600,n,8,2");
m_MSComm.SetRThreshold(1);
m_MSComm.SetInputLen(0); 展开
{
// TODO: Add your control notification handler code here\
//串口接收处理函数
VARIANT vInput;
COleSafeArray svInput;
LONG len,k;
char RXDATA[1024];
CString sTemp;
switch (m_MSComm.GetCommEvent())
{
case 2://串口接收正常数据处理
m_MSComm.SetRThreshold(0);//RThreshold=0 ;
vInput=m_MSComm.GetInput();
svInput=vInput;
len=svInput.GetOneDimSize();
for(k=0;k<len;k++)
svInput.GetElement(&k,&RXDATA[k]);
/*
for (k=0;k<len;k++)
{
sTemp.Format("%c",RXDATA[k]);
m_sRxData+=sTemp;
}*/
RxCount=RxCount+1;
m_MSComm.SetRThreshold(1);
m_Status.SetWindowText(m_sRxData);
UpdateData(FALSE);
m_sRxData="";
break;
}
}
串口设置如下
m_MSComm.SetCommPort(3);
m_MSComm.SetInBufferSize(1024);
m_MSComm.SetOutBufferSize(512);
m_MSComm.SetInputMode(1);
m_MSComm.SetSettings("9600,n,8,2");
m_MSComm.SetRThreshold(1);
m_MSComm.SetInputLen(0); 展开
1个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询