电脑串口接收12位数据应如何处理?
最近我在做一个AD转换的实验,采集数据通过串口上传到电脑。12位数据分成两个8位数据上传。
请问如何将两个数据和为一体?
我使用编程环境是:VS2010,串口控件serialPort。 高四位数据*256+低八位数据不就是你的ad数据吗? 本帖最后由 xuxinguo 于 2012-4-26 16:18 编辑
tangxh 发表于 2012-4-26 16:10 static/image/common/back.gif
高四位数据*256+低八位数据不就是你的ad数据吗?
但是怎么加也是个问题,要考虑到接收的顺序,不信你做做试试。
这是我以前做的,但是不成功。
private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e) //每收到一个字节执行该函数
{
buf = serialPort1.ReadByte(); //读取字节
switch (data_status)
{
case 0:
if (buf == 0x55) data_status= 1; //确认位
break;
case 1:
buf_lo = buf;
data_status= 2;
break;
case 2:
buf_hi = buf;
data_status= 0;
break;
}
}
修正
很好解决:发送时:
unsigned short nAdcVal;
unsigned char nTxDM,nTxDS.
nTxDM= (unsignedchar)((nAdcVal>>7)|0x80);
nTxDS= (unsignedchar)(nAdcVal&0x7F);
接收后假设为hdata:
for(i=0;i<99;i++)
{
if((hdata&0x80)&&(hdata&0x80)==0)
nAdcVal=((hdata&0x7F)<<7)|hdata;
}
低字节只发送7bits,第8bit永远为0
高字节发送5bits,第8bit永远为1
页:
[1]