Chinaunix首页 | 论坛 | 博客
  • 博客访问: 339310
  • 博文数量: 88
  • 博客积分: 1695
  • 博客等级: 上尉
  • 技术积分: 1380
  • 用 户 组: 普通用户
  • 注册时间: 2009-08-06 15:48
个人简介

喜欢美食, 旅行..

文章分类

全部博文(88)

文章存档

2014年(2)

2013年(12)

2012年(14)

2010年(8)

2009年(52)

我的朋友

分类: WINDOWS

2009-10-12 11:35:18

最近做了一个有关串口通信的程序,在我们这边怎么测试都可以,但一交到客户那边就问题百出,不是普通COM口通信失败,就是USB转COM口通信失败。通过LOG,我们知道原因所在,就是我们软件对串口DCB流控制的设置,跟客户的板子对DCB流控制设置不一致。而我们在无法获知客户DCB流控制设置的情况下,瞎改了一番DCB设置,结果是可想而知的。由参考得知如下经验(vc代码),希望和遇到同类问题的XDJM们一起分享。
 
VOID InitDCB(...)
{
     ...........
    // Set serial parameters
    dcb.BaudRate = m_dwBaudRate;     // Band rate
    dcb.ByteSize = m_nByteSize;      // Data bit, either 7 or 8
    dcb.Parity = m_nParity;          // Parity, must between 0 to 4
    dcb.StopBits = m_nStopBits;      // Stop bit must between 0 to 2
    dcb.fBinary = TRUE;              // Bianry must be TRUE in Win32
    dcb.fParity = FALSE;
   
#ifdef WIN32
    dcb.fDtrControl = DTR_CONTROL_ENABLE;
    dcb.fRtsControl = RTS_CONTROL_ENABLE;
#endif
 
    switch (stPortPara->Flow) { // Judge flow control
    case IdFlowX:
    /*--------软件流控制方式---------------
       dcb.fOutX = TRUE;
       dcb.fInX = TRUE;
       dcb.XonLim = CommXonLim;
       dcb.XoffLim = CommXoffLim;
       dcb.XonChar = XON;
       dcb.XoffChar = XOFF;
    --------------------------------------*/
       break;
    case IdFlowHard:
    /*--------硬件流控制方式---------------
       dcb.fOutxCtsFlow = TRUE;
#ifdef WIN32
       dcb.fRtsControl = RTS_CONTROL_HANDSHAKE;
#else
       dcb.CtsTimeout = 30;
       dcb.fRtsflow = TRUE;
#endif
    --------------------------------------*/
       break;
 
    }
     ...........
}

允许转载,转载时请务必以超链接形式标明文章 原始出处 。                        文章转自 http://cnmtjp.blog.51cto.com/204390/54718

阅读(4460) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~