标题:串口通信程序 BYTE数组赋值问题
只看楼主
wangjianbob3
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2010-6-2
结帖率:100%
已结贴  问题点数:20 回复次数:1 
串口通信程序 BYTE数组赋值问题
我的串口通信程序可以正常收发数据,但我需要把接收到的数据赋值给BYTE类型的一个数组,以便提取有用数据进行判断;接收串口数据的函数中,把接收到的数据赋值给BYTE型数组的程序如下:

LONG CMFC2Dlg::OnCommunication(WPARAM ch, LPARAM port)   //接收显示串口数据
{
    if (port <= 0 || port > 4)
        return -1;   
       //不添加以下几个语句,程序可以正常收发数据。BYTE RxData[255]我已经定义并初始化了。编译可以通过,但实际接收数据时SetSize(),GetSize(),GetAt()这三个程序会产生中断(没有具体的错误说明)。           
    CByteArray *RXBytes1  ;
    // RXBytes1->SetSize(256);
    RXBytes1=(CByteArray*)ch;

    int lengthTemp = (int)RXBytes->GetSize();

    for (int i = 0; i < lengthTemp; i++)
    {
    RxData[i] = RXBytes->GetAt(i);
    }
      ……用于显示接收数据的部分就不贴出来了。(串口类用的是网上很常见的SerialPort类)
    小弟已经困惑很久了,跪求大神指点迷津。
注:产生中断的位置如下:
AFXCOLL_INLINE INT_PTR CByteArray::GetSize() const  //这个位置产生中断产生中断,经过我的测试CByteArray类的函数,只要在上面使用了,都会产生相应的中断
    { return m_nSize; }
_AFXCOLL_INLINE INT_PTR CByteArray::GetCount() const
    { return m_nSize; }
_AFXCOLL_INLINE BOOL CByteArray::IsEmpty() const
    { return m_nSize == 0; }
_AFXCOLL_INLINE INT_PTR CByteArray::GetUpperBound() const
    { return m_nSize-1; }
搜索更多相关主题的帖子: 串口 BYTE 赋值 通信 
2010-06-02 15:26
幽园香客
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:231
专家分:142
注 册:2006-2-27
得分:20 
AFXCOLL_INLINE INT_PTR CByteArray::GetSize() const  //这个位置产生中断产生中断,经过我的测试CByteArray类的函数,只要在上面使用了,都会产生相应的中断

RXBytes1这个指针确定有效?如果能调试的话,最后调试下,这样更容易确定问题所在

[ 本帖最后由 幽园香客 于 2010-6-3 12:30 编辑 ]

做个有用的人!
2010-06-03 12:02



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-309045-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.075438 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved