vc读写串口程序

串口通讯是vc程序中经常用到的通讯方式,有实现简单、使用方便灵活、数据传输稳定可靠的特点。串口通讯可以通过多种技术实现,例如:ActiveX控件,I/O存取和文件操作等。在前一篇文章中,我们介绍了串口作为文件处理,可以通过Windows文件创建函数打开串口,下面进一步介绍读取和写入串口的程序代码。

引用内容 引用内容


vc读写串口的程序代码如下:

BOOL CSeries::SendData(BYTE *pBuf, int sizeBuf, unsigned long* pLength)
{
    if(bInit==FALSE)
    {
        strErrorMsg="串口尚未打开!";
        return FALSE;
    }

    if (WriteFile(m_hComm,     // 文件句柄
        pBuf,              // 数据缓冲区指针
        sizeBuf,              // 字节数
        pLength,NULL) == 0)          // 接收成功发送数据长度的指针
    {
        strErrorMsg="向串口发送数据失败!";
        return FALSE;
    }

    return TRUE;
}

BOOL CSeries::ReceiveData(BYTE *pBuf, int sizeBuf, unsigned long* pLength)
{
    if(bInit==FALSE)
    {
        strErrorMsg="串口尚未打开!";
        return FALSE;
    }

    if (ReadFile(m_hComm,    // 句柄
                 pBuf,               // 数据缓冲区指针
                 sizeBuf,              // 字节数
                    pLength,                 // 指向已经读入的字节数
                 NULL) == 0)              // 重叠I/O结构体
    {
        strErrorMsg="读取串口数据失败!";
        return FALSE;
    }

    return TRUE;
}
  
UINT  CSeries::ReadProc(LPVOID lpParam)
{
    CSeries* pSeries = (CSeries*)lpParam;

    while(::WaitForSingleObject(pSeries->m_hEndThreadEvent,10) != WAIT_OBJECT_0)
    {
        if(pSeries->pCallBackProc!=NULL)
        {
            BYTE cc[100];
            unsigned long  length;
            pSeries->ReceiveData(cc, 100, &length);
            if(length!=0)
            {
                pSeries->pCallBackProc(cc,length,pSeries->pVoid);
            }
        }
    }

    return 0;
}

[本日志由 cnfgg 于 2009-08-07 03:50 PM 编辑]
文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags: 串口 代码
相关日志:
评论: 0 | 引用: 0 | 查看次数: -
发表评论
昵 称:
密 码: 游客发言不需要密码.
内 容:
验证码: 验证码
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.