00猫殿下00 2015-11-29 03:59 采纳率: 0%
浏览 1518
已结题

vc++编软件与单片机通信的问题

点击通信校验后有时会弹出成功,但是有时会没反应,这是为什么?程序有错误吗?

void CTestDlg::OnOnCommMscomm1() //小电话
{
// int inCount;
VARIANT input;
BYTE rxdata[2048];
long len,k;
COleSafeArray safearray;
switch(myComm.GetCommEvent())
{
case 2:

input=myComm.GetInput();
safearray=input;
len=safearray.GetOneDimSize();
for (k=0;k<len;k++)
{
safearray.GetElement(&k,rxdata+k);
}

if ((rxdata[0]==07) && (rxdata[1]+rxdata[2]==255))
{
iStatus=2;
AfxMessageBox("通讯校验成功!");
m_start.EnableWindow(TRUE);
break;
}
/*
else if ((rxdata[0]==05) && (rxdata[1]+rxdata[2]==255))
{
iStatus=2;
AfxMessageBox("电磁铁成功!");
break;
}*/

break;

}

VARIANT variant_inp;
COleSafeArray safearray_inp;
CString strtemp;
if(m_ctrlComm.GetCommEvent()==2) //事件值为2表示接收缓冲区内有字符
{             ////////根据通信协议加入处理代码

HVSTATUS status = STATUS_OK;

/*

  • 启动数字摄像机采集图像到内存 */ BYTE *ppBuf[1]; ppBuf[0] = m_pRawBuffer; status = HVStartSnap(m_hhv, ppBuf,1); HVTriggerShot(m_hhv); // 外部触发采集, 高电平有效High. // SetTimer(1,1000,NULL); // 设置定时器,定时时间为6000ms. HV_VERIFY(status); if (HV_SUCCESS(status)) { m_bStart = TRUE; } }

}

// 通信校验按钮
void CTestDlg::OnButton2()
{
CByteArray Array;
Array.RemoveAll();
Array.SetSize(1);
Array.SetAt(0,17);//0x11
myComm.SetOutput(COleVariant(Array));
iStatus=1;

}

void CTestDlg::OnButOpen()
{
// TODO: Add your control notification handler code here
HVSTATUS status = STATUS_OK;

/*

  • 初始化数字摄像机采集图像到内存的控制,
  • 指定回调函数SnapThreadCallback和用户参数m_hWnd */ status = HVOpenSnap(m_hhv, SnapThreadCallback, m_hWnd); HV_VERIFY(status); if (HV_SUCCESS(status)) { m_bOpen = TRUE; //标志已经打开Snap环境 } }

void CTestDlg::OnButStart() //在线检测按钮
{
// TODO: Add your control notification handler code here
HVSTATUS status = STATUS_OK;

/*

  • 启动数字摄像机采集图像到内存 */ BYTE *ppBuf[1]; ppBuf[0] = m_pRawBuffer; status = HVStartSnap(m_hhv, ppBuf,1); HVTriggerShot(m_hhv); // SetTimer(1,1000,NULL); // 设置定时器,定时时间为6000ms. HV_VERIFY(status); if (HV_SUCCESS(status)) { m_bStart = TRUE; } }

void CTestDlg::OnButStop() //关闭相机按钮
{
// TODO: Add your control notification handler code here
HVSTATUS status =STATUS_OK;

// 停止采集图像到内存,可以再次调用HVStartSnapEx启动数字摄像机采集
status = HVStopSnap(m_hhv);
HV_VERIFY(status);
if (HV_SUCCESS(status)) {
m_bStart = FALSE;
}
}

  • 写回答

1条回答 默认 最新

  • devmiao 2015-11-29 04:18
    关注

    用串口调试助手调试下,波特率,停止位,校验位对不对

    评论

报告相同问题?

悬赏问题

  • ¥15 matlab数字图像处理频率域滤波
  • ¥15 在abaqus做了二维正交切削模型,给刀具添加了超声振动条件后输出切削力为什么比普通切削增大这么多
  • ¥15 ELGamal和paillier计算效率谁快?
  • ¥15 file converter 转换格式失败 报错 Error marking filters as finished,如何解决?
  • ¥15 ubuntu系统下挂载磁盘上执行./提示权限不够
  • ¥15 Arcgis相交分析无法绘制一个或多个图形
  • ¥15 关于#r语言#的问题:差异分析前数据准备,报错Error in data[, sampleName1] : subscript out of bounds请问怎么解决呀以下是全部代码:
  • ¥15 seatunnel-web使用SQL组件时候后台报错,无法找到表格
  • ¥15 fpga自动售货机数码管(相关搜索:数字时钟)
  • ¥15 用前端向数据库插入数据,通过debug发现数据能走到后端,但是放行之后就会提示错误