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
    关注

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

    评论

报告相同问题?

悬赏问题

  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!