我晕,你串口数据是“ABCD12345END” 这个吧
strBuf = m_MyPort.ReadTo("END"); 
这行代码已经把ABCD12345END 全部都取出来过了  
strBuf = m_MyPort.ReadTo("ABCD"); 
除非你再发送一个含有“ABCD”的数据串,否则串口里根本就没有数据,怎么取出来
m_MyPort.ReadTo("END"); 这行代码的意思是  一直等到出现了“END”,然后把END之前的数据全部取出,并清空串口接收缓冲区

解决方案 »

  1.   

    没人回答我当散分也要感谢楼上的“顶”。问题是程序应该是线性往下执行的,收到有“END”的语句,取出并清空缓冲,然后应该向下执行,即执行MessageBox.Show("收到END"); 和bAllowProcess = true; 然后执行strBuf = m_MyPort.ReadTo("ABCD"); 和MessageBox.Show("ABCD"); 
    ------------------------------------------
    假如程序停在strBuf = m_MyPort.ReadTo("ABCD");那你说我再发一条“ABCD12345END”,是弹出"收到END"还是"ABCD"呢?