xuxinguo 发表于 2012-4-26 15:59:40

电脑串口接收12位数据应如何处理?

最近我在做一个AD转换的实验,采集数据通过串口上传到电脑。
12位数据分成两个8位数据上传。
请问如何将两个数据和为一体?
我使用编程环境是:VS2010,串口控件serialPort。

tangxh 发表于 2012-4-26 16:10:34

高四位数据*256+低八位数据不就是你的ad数据吗?

xuxinguo 发表于 2012-4-26 16:14:49

本帖最后由 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;
             }
}

dragon_hn 发表于 2012-4-26 21:01:21

修正

很好解决:
发送时:
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]
查看完整版本: 电脑串口接收12位数据应如何处理?