关于Mscomm串口雷达测速程序笔记

本手册是为火车雷达使用手册. 适用的软件版本为Ver605版本,支持雷达倾角校正。

1.数据通讯协议:RS232C,8 比特数据,1比特停止位,无校验位。

2.速度测量输出:

拜特            定义
BYTE 1 :      FFH
BYTE 2:       目标速度低位
BYTE 3:       目标速度高位

BYTE 4:    0D

BYTE 5:    **

BYTE 6:    **
目标速度 =(目标速度高位*128 +目标速度低位)/100.

BYTE 5和BYTE 6是工程师所要了解的信息,客户无需知道。

3.雷达发送接收时十六进制数据

FF 00 00 0D 01 6B

FF 00 00 0D

FF 00 00 0D 01 77

FF 00 00 0D

FF 00 00 0D 02 77

FF 1E 00 0D 01 51

FF 1E 00 0D

FF 1D 00 0D 01 67

FF 1D 00 0D

FF 00 00 0D 02 5B

FF 00 00 0D


解析代码:

typedef vector<BYTE> ByteArray; //定义容器数组

void CMSComDlg::OnComm() 
{
// TODO: Add your control notification handler code here


static ByteArray g_RecvByteAry;
VARIANT variant_inp;
COleSafeArray safearray_inp;
LONG len, k;
BYTE recvData;
int  tmpSpeed;
float fspeed;
int counter=0;
CString fmt;

if (m_Comm.GetCommEvent() == 2)
{
variant_inp = m_Comm.GetInput();
safearray_inp = variant_inp;
len = safearray_inp.GetOneDimSize();

for (k=0; k<len; k++)//接收数据
{
safearray_inp.GetElement(&k, &recvData);
if (recvData == 0xff)
{
counter = 0;
g_RecvByteAry.clear();
}
g_RecvByteAry.push_back(recvData);
counter++;
if (counter == 4 && g_RecvByteAry[3] == 0x0D)
{
tmpSpeed = 0 ;
tmpSpeed |= g_RecvByteAry[2];
tmpSpeed *= 128;
tmpSpeed += g_RecvByteAry[1];
tmpSpeed *= 100;
tmpSpeed /= 36;
m_Receive.Format("Current Radar speed [%d] mm/s", tmpSpeed);
UpdateData(FALSE);
CLogMessage(LOG_DEBUG, "雷达速度:[%d] mm/s !\n",tmpSpeed);
}

}
}
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值