VS2010用MSComm控件进行通信,数据量大时程序死机
数据量小的时候接收没问题,但是我在接收单片机传的一帧320*240 RGB565图像的数据时就不行了。
请问我该怎么改?或者有什么好的方案来接收数据?
这是我的代码
void CCommTestDlg::OnBnClickedOpenUsart()
{
// TODO: 在此添加控件通知处理程序代码
if(m_mscomm.get_PortOpen()) //若串口打开,则关闭串口
{
m_mscomm.put_PortOpen(FALSE);
}
m_mscomm.put_CommPort(5);
m_mscomm.put_Settings(_T("115200,n,8,1"));
m_mscomm.put_InBufferSize(1024);//接收缓冲区
m_mscomm.put_OutBufferSize(1024);//发送缓冲区
m_mscomm.put_InputLen(0);//设置当前接收区数据长度为0,表示全部读取
m_mscomm.put_InputMode(1);// 以二进制方式读写数据
m_mscomm.put_RThreshold(1);//接收缓冲区有1个及1个以上字符时,将引发接收数据的OnComm事件
m_mscomm.put_SThreshold(0);//每发送1个字符时,不触发OnComm事件
if(!m_mscomm.get_PortOpen())//如果串口没有打开则打开
{
try
{
m_mscomm.put_PortOpen(TRUE);
AfxMessageBox(_T("串口打开成功"));
}
catch (...)
{
AfxMessageBox(L"串口打开失败");
return;
}
m_mscomm.get_Input(); //先预读缓冲区以清除残留数据
}
}
void CCommTestDlg::OnCommMscomm1()
{
static unsigned int cnt=0;
VARIANT variant_inp;
COleSafeArray safearray_inp;
long len,k;
unsigned intdata[1024]={0};
byte rxdata[1024]; //设置BYTE数组
CString strtemp,string;
if (m_mscomm.get_CommEvent()==2) //值为2表示接收缓冲区内有字符
{
cnt++;
variant_inp= m_mscomm.get_Input(); //读取缓冲区
safearray_inp= variant_inp; //变量转换
len= safearray_inp.GetOneDimSize(); //得到有效的数据长度
for (k=0;k<len;k++)
{
safearray_inp.GetElement(&k,rxdata+k);
}
for (k=0;k<len;k++)
{
if(m_ctrlHexDiaplay.GetCheck())
strtemp.Format(_T("%02X "),*(rxdata+k)); //16进制显示
else
strtemp.Format(_T("%c "),*(rxdata+k)); //字符显示
m_EditReceive+=strtemp;
UpdateData(FALSE);
if (m_EditReceive.GetLength()>4000) //清空接收框
{
m_EditReceive=" ";
UpdateData(FALSE);
}
}
FILE *p= fopen( "pic1.dat","ab");
fwrite(rxdata,len,1,p);
fclose (p);
}
...全文
相关推荐
vs2010 串口通信 全部源代码 运行过可用
vs2010 串口通信 全部源代码 运行过可用 。自己写的 用vs2010运行, 可以自己修改com口 和 波特率后使用。
解决win10系统中VS2010没有串口通信控件
解决win10系统中VS2010没有串口通信控件 串口通信控件是VC6.0工具箱里面的控件,VC6.0以上的VS版本没有该控件,此时需要单独下载该控件 链接:link 提取码:v1pu 将下载到的 MSCOMM32.OCX 文件,放到 C:\Windows\SysWOW64 目录下 注册控件,win+R输入regsvr32 C:\Windows\SysWOW64\MSCOMM32.OC...
VS2010 C++ 串口通信软件(包含mscomm控件和使用说明)
VS2010 C++ 串口通信软件设计,其中包含了mscomm控件,和在VS2010 C++中实现串口通信的详细步骤。是初学C++难得的经典资料。
VS2010串口通信 利用MSComm控件实现
基于VS2010软件C++语言的串口通信编程,使用MSComm控件实现
MSCOMM串口控件
VS2010MFC没有串口控件,此压缩包里包含了串口控件相关的3个文件。mscomm32.ocx MSCOMM32.oca MSCOMM32.DEP MSCOMM.SRG 将这几个文件拷贝到一个固定的目录下然后注册就可以在MFC里正常使用串口控件了。 注册:开始->运行 输入Regsvr32 "C:\WINDOWS\system32\MSCOMM32.OCX"


