阅读:2543回复:2
[求助]急!!请帮忙看看这个串口读取到底那里错了?
<P>public bool ReadPort(ref char[] m_Buffer,ref int m_BufPos) <br> { <br> if (hComm == INVALID_HANDLE_VALUE) <br> {<br> return false; <br> }<br> COMSTAT ComStat = new COMSTAT(); <br> int dwErrorFlags = 0; </P>
<P> ClearCommError(hComm, ref dwErrorFlags, ref ComStat); <br> <br> if (dwErrorFlags != 0) <br> {<br> PurgeComm(hComm, PURGE_RXCLEAR | PURGE_RXABORT); <br> }</P> <P> if (ComStat.cbInQue > 0) <br> {<br> OVERLAPPED ovlCommPort = new OVERLAPPED(); <br> int NumBytes=ComStat.cbInQue;<br> byte[] BufBytes = new byte[NumBytes]; <br> int BytesRead=0; <br> if(!ReadFile(hComm,BufBytes,NumBytes,ref BytesRead,ref ovlCommPort))<br> {<br> return false;<br> }<br> if(BytesRead>0)<br> {<br> for(int i=0;i<BytesRead;i++)<br> {</P> <P> m_Buffer[m_BufPos+i]=Convert.ToChar(BufBytes);</P> <P> }<br> m_BufPos+=BytesRead;<br> return true;<br> }<br> else<br> {<br> return false;<br> }<br> } </P> <P> else<br> {<br> return false;<br> }<br> } //end ReadPort</P> <P>我是先设置了一个button,用来打开串口,另外,我使用了timer控件,使用了tick,如果串口打开成功,使timer的enable为true,开始读串口数据。现在串口打开成功,但是就是没有数据,不知哪里错了。C#写的。</P> <P>请各位高手帮帮忙吧。谢谢各位了!!</P> [此贴子已经被作者于2006-5-15 17:28:27编辑过]
|
|
1楼#
发布于:2006-05-17 22:18
<P>没有提示任何错误吗</P>
|
|
|
2楼#
发布于:2006-05-17 22:31
<P>没有提示错误,只是在pda上运行时一直没有数据读出。ComStat.cbInQue一直是0,但是如果没有ClearCommError(hComm, ref dwErrorFlags, ref ComStat); 作处理直接ReadFile 的话 会死机。</P>
|
|