VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 768|回复: 4

我用mscomm控件写的串口接收程序,两台计算机之间接收可以,接收单片机发送的数据时有问

[复制链接]

1

主题

3

帖子

4.00

积分

新手上路

Rank: 1

积分
4.00
发表于 2020-1-25 22:20:01 | 显示全部楼层 |阅读模式
在两台计算机之间实验,软件可以接收到另一台计算机串口发送过来的数据(用串口调试工具手动或自动发送都行)。
但用单片机发送数据时,软件可以接收到一丁点数据,就直接弹出错误,说程序要关闭;或者是没有响应,接收不到数据。
串口事件源码是:
void CSerialView::OnOnCommMscomm1()
{
   // TODO: Add your control notification handler code here
       
    VARIANT variant_inp;
    COleSafeArray safearray_inp;
    LONG len,k;
    BYTE rxdata[2048]; //设置BYTE数组 An 8-bit integerthat is not signed.
    CString strtemp;

   
if(m_comm.GetCommEvent()==2) //事件值为2表示接收缓冲区内有字符
    {             ////////以下加入处理代码
        variant_inp=m_comm.GetInput(); //读缓冲区
        safearray_inp=variant_inp; //VARIANT型变量转换为ColeSafeArray型变量
        len=safearray_inp.GetOneDimSize(); //得到有效数据长度
        for(k=0;k<len;k++)
            safearray_inp.GetElement(&k,rxdata+k);//转换为BYTE型数组,后面保存到文件
        for(k=0;k<len;k++) //将数组转换为Cstring型变量
        {
            BYTE bt=*(char*)(rxdata+k); //字符型
            strtemp.Format("%c",bt); //将字符送入临时变量strtemp存放
               
            m_strRXData+=strtemp; //把对应字符串加入接收编辑框
        }
        FILE *pFile=fopen("ecg.dat","ab+");//追加打开二进制(b)文件
        fwrite(rxdata,1,len,pFile);//写文件
        fflush(pFile);       
    }
    UpdateData(FALSE); //更新编辑框内容

}
回复

使用道具 举报

1

主题

3

帖子

4.00

积分

新手上路

Rank: 1

积分
4.00
 楼主| 发表于 2020-3-17 15:00:01 | 显示全部楼层
我这个程序也是参考里面的调试助手的,但就是存在问题。是不是用控件就会有类似的bug。我单片机发送数据是512byte/s
回复

使用道具 举报

1

主题

3

帖子

4.00

积分

新手上路

Rank: 1

积分
4.00
 楼主| 发表于 2020-6-29 09:15:01 | 显示全部楼层
自己顶下,还请帮忙呀,到底是什么原因呢?
回复

使用道具 举报

0

主题

17

帖子

11.00

积分

新手上路

Rank: 1

积分
11.00
发表于 2020-8-22 10:45:01 | 显示全部楼层
看看单片机的串口设置是不是与PC一样的,波特率,奇偶检验位,停止位等。
回复

使用道具 举报

0

主题

1

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
发表于 2020-8-22 12:00:01 | 显示全部楼层
难道你不调试吗?看看是哪步的问题
你的代码是龚老师的代码中copy下来的。。。我学的时候也是这个没问题
可能别的地方

FILE *pFile=fopen("ecg.dat","ab+");//追加打开二进制(b)文件
fwrite(rxdata,1,len,pFile);//写文件

比如open失败。。要加上pFile的判断
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表