WEB开发网
开发学院软件开发VC 多线程,多接收模式串口类 LsComm 之二 阅读

多线程,多接收模式串口类 LsComm 之二

 2006-07-21 11:15:53 来源:WEB开发网   
核心提示: 6. Hi_nihaoma:为什么我使用重叠方式打开串口,根据示例:for(int j= 0; j< 10; j++){if (!port2.Write(pBuf, 10000, overlapped)){DWORD dwBytesWritten;WaitForSingleObjec

6. Hi_nihaoma:为什么我使用重叠方式打开串口,根据示例:

for(int j= 0; j< 10; j++)  
{  
  if (!port2.Write(pBuf, 10000, overlapped))  
  {  
    DWORD dwBytesWritten;  
    WaitForSingleObject(event, INFINITE);  
    port2.GetOverlappedResult(overlapped, dwBytesWritten, TRUE);  
  }  
  if (!port2.Read(pBuf, 10, overlapped))  
  {  
    DWORD dwBytesRead;  
    if (WaitForSingleObject(event,1000) == WAIT_OBJECT_0)  
    {  
      TRACE(_T("Data was read from the serial port\n"));  
      port2.GetOverlappedResult(overlapped,dwBytesRead,FALSE);  
    }  
    else  
      TRACE(_T("No data was read from the serial port\n"));  
  }  
  
  port2.SetMask(EV_TXEMPTY);  
  port2.WaitEvent(dwMask,overlapped);   
}  
port2.GetOverlappedResult(overlapped,dwBytesRead,FALSE);  
dwByteRead= 4啊???急急急!!!  
答:感觉可能是接收的问题,不能所有容纳发送的全部数据,而引发异常吧。看你这行port2.Write(pBuf, 10000, overlapped);一次发送这么大的数据量 ,是不是这的问题, 我的计算机上只有一个串口,把2,3口连接后收发数据测试了一下。一次发送超过100个就会发生读地址错误,但是低于这个速率就没问题。可能是接收的速度跟不上吧 。具体问题正在找。

结束语:

本来早就想要改一下,可实在是没有时间,不是开玩笑,大概3个月没有时间上网看看新闻了。写程序,就是要认真仔细的面对自己写的每一行代码 ,不放过自己的每一个Bug。谁都希望自己的程序不出一个Bug,可这实在是说起来容易做起来难。希望大家看到Bugs要贴在下面,有时间我会努力改的。上面的一些问题自己的水平实在是太有限了 ,搞得还不是太清楚,希望如果谁知道,就告诉偶。有些问题就得摆出来,然后再一点点搞清楚才会有提高。如果只是默许的认为简单,容易,不求甚解,相反会害了自己。

上一页  1 2 3 4 5 

Tags:线程 接收 模式

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接