往串口写一段字符串后,串口另一端会发送一个反馈回来。然后自己根据这个反馈来判断是否发送下一字符串。该怎么做啊??我现在是这样做的
CMYDlg::UpdateFiles()
{
WritePort("update");
if (GetOneChar(Inbuff) == 0x11)
WritePort(updateHead);
if (GetOneChar(Inbuf) == 0x03)
WritePort(updateFile);
}
CMYDlg::OnComm函数中这样处理:
if(m_ctrlComm.GetCommEvent()==2)
{
variant_inp=m_ctrlComm.GetInput();
safearray_inp=variant_inp;
len=safearray_inp.GetOneDimSize();
for(k=0;k<len;k++)
safearray_inp.GetElement(&k,rxdata+k);
for(k=0;k<len;k++)
{
BYTE bt=*(char*)(rxdata+k);
InBuf[iend++ &(1024-1)] = bt;
}
}问题是它总是执行完UpdateFiles()函数后再执行OnComm(),因为GetOneChar(Inbuf)时不能收到反馈,而非重启程序的第二次执行时,则有反馈(应该是前一次留下的)
各位大侠说说你们的思路呢,谢谢
CMYDlg::UpdateFiles()
{
WritePort("update");
if (GetOneChar(Inbuff) == 0x11)
WritePort(updateHead);
if (GetOneChar(Inbuf) == 0x03)
WritePort(updateFile);
}
CMYDlg::OnComm函数中这样处理:
if(m_ctrlComm.GetCommEvent()==2)
{
variant_inp=m_ctrlComm.GetInput();
safearray_inp=variant_inp;
len=safearray_inp.GetOneDimSize();
for(k=0;k<len;k++)
safearray_inp.GetElement(&k,rxdata+k);
for(k=0;k<len;k++)
{
BYTE bt=*(char*)(rxdata+k);
InBuf[iend++ &(1024-1)] = bt;
}
}问题是它总是执行完UpdateFiles()函数后再执行OnComm(),因为GetOneChar(Inbuf)时不能收到反馈,而非重启程序的第二次执行时,则有反馈(应该是前一次留下的)
各位大侠说说你们的思路呢,谢谢
WritePort("update");
Sleep(500)//延迟500ms
if (GetOneChar(Inbuff) == 0x11)
WritePort(updateHead);
if (GetOneChar(Inbuf) == 0x03)
WritePort(updateFile);
Sleep(500)//延迟500ms
if (GetOneChar(Inbuff) == 0x11)
WritePort(updateHead);
if (GetOneChar(Inbuf) == 0x03)
WritePort(updateFile);
谢了
if (GetOneChar(Inbuff) == 0x11)
WritePort(updateHead);
if (GetOneChar(Inbuf) == 0x03)
WritePort(updateFile);