从串口接收字节

时间:2011-01-10 06:08:19

标签: visual-c++ mfc

您好我使用vc ++ 6.0 MSCOMM进行串行通信我必须读取数据(4个字节)并从串口显示。

ex: data format is:
>88 84 10 02   (4 bytes data from port)<br>
>C6 1E 10 02   (Received Data) but i have to display 88 84 but i am getting C6 and 1E.

我的代码是:

VARIANT data;
BSTR k;
static char dbuff[4];
int dcount=0;
CString data;

if(m_mscom.GetCommEvent()==2) // Receiving data from port
{
    data=m_mscom.GetInput();
    k=data.bstrVal;
    dbuff[dcount] = char (k[0]);
    dcount++;

    if(dcount == 4)
    {
        dcount=0;
        data.Format ("%02X%02X%02X%02X", (unsigned char)dbuff[0], 
               (unsigned char)dbuff[1], (unsigned char)dbuff[2],
               (unsigned char)dbuff[3]);
    }
}

请帮助我的代码中有什么问题,提前谢谢,请举例说明如何从端口读取字节。

2 个答案:

答案 0 :(得分:1)

如果我是你,我会做以下事情:

  • 升级到新的编译器 - VS 2008或2010
  • 使用真实的界面 - 而不是COM / MSCOMM

试着看看:

WriteFile()
ReadFile()
CreateFile()

无论VS版本如何 - 删除MSCOMM垃圾并使用文件句柄。

或者,如果您坚持使用COM对象,请尝试在线搜索C ++和mscomm - 就像这样的结果: http://www.edaboard.com/thread19993.html

答案 1 :(得分:0)

检查您是否使用了正确数量的停止位,因为您可能会出现歪斜。检查奇偶校验位是否存在传输错误。

我最近使用了一个快速的C#项目来读取串口。如果要切换到C#

,可以发布代码