【问题标题】:Receive bytes from serial port从串口接收字节
【发布时间】:2011-01-10 14:34:41
【问题描述】:

您好,我正在使用 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]);
    }
}

请帮助我的代码有什么问题,在此先感谢,请给我一个如何从端口读取字节的示例。

【问题讨论】:

    标签: visual-c++ mfc


    【解决方案1】:

    如果我是你,我会这样做:

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

    试试看:

    WriteFile()
    ReadFile()
    CreateFile()
    

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

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

    【讨论】:

      【解决方案2】:

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

      我最近使用了一个快速的 C# 项目从串口读取数据。如果你想切换到 C# 可以发布代码

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-10-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-31
      相关资源
      最近更新 更多