天空树 发表于 2013-9-22 13:29:52

关于Arduino发送6个AD转换结果组成字符串发送问题

最近用Arduino做一个简单的模拟数据采集,想用6个模拟输入端口采集6路模拟电压值,可是采集之后没有办法将这6个转换结果构成一个长的字符串进行发送,而且0~1023转化的数字大小不同,发送的字节也不同,这就给字符串的解析带来了很大的困难,有没有哪位大神遇到过这方面的问题,是怎么解决的?求学习...

万马奔腾 发表于 2013-9-23 00:16:01

同问~~:):)

天空树 发表于 2013-9-23 10:23:48

这是我用2个AD转换做的,用了Serial.println()这个函数,在上位机处理的时候将换行符之前的字符串进行了匹配,效果还行,但是发送的字节数有一点多,0-9数据占一个字节,10-99数据占两个字节,100-999占三个字节,1000-1023占四个字节,再加上换行符,6个AD转换的话发送的字节数过于多了,我也想过将其千位、百位、十位、各位分别发送,但是现在还没有试验成功,对于Arduino下层的一些设置还不是很清楚,不知道大家有什么良策...

int LED=13;
int a;

int AD_Value0=0;               //AD转换后的数字量
int AD_Value1=0;               //AD转换后的数字量
//float float_AD_Value;         //数字量换算成浮点电压量

void setup()
{
Serial.begin(9600);
pinMode(LED,OUTPUT);
}

void loop()
{
if(Serial.available())
{
    a=Serial.read();
if(a==0xAA)
    {
      digitalWrite(LED,1);
      
      AD_Value0=analogRead(A0);
   
   // delay(20);
      AD_Value1=analogRead(A2);
      
      Serial.println(AD_Value0);
      Serial.println(AD_Value1);   
      
      digitalWrite(LED,0);
    }
   }
}

天空树 发表于 2013-9-23 11:30:20

千位、百位、十位、各位分别发送,我试了一下,还是挺好的,在上位机中分别进行解析和运算,再转化为0-1023的值,6个的话一共需要发24个字节,这样发送的数据也缩小了一些。我觉得0-1023的数值可以只用两个字节搞定的,我用单片机的时候用位运算,一个字节表示0-255,两个字节完全可以表示0-1023了,但是Arduino中还没有实现,大家可有什么好的办法,这样发送的数据字节又可以减少一半了{:soso_e100:} 。

Arduino代码,上位机只需要把每一位提取出来加权运算即可;

int wei;
int LED=13;
int a;

int AD_Value0=0;               //AD转换后的数字量
int AD_Value1=0;               //AD转换后的数字量

void SendData(int x)
{
int j;
wei = x / 1000;
wei = x % 1000 / 100;
wei = x % 100 / 10;
wei = x % 10;
for(j=0;j<4;j++)
{
    Serial.write((byte)wei);
}
}

void setup()
{
Serial.begin(9600);
pinMode(LED,OUTPUT);
}

void loop()
{
if(Serial.available())
{
    a=Serial.read();
if(a==0xAA)
    {
      digitalWrite(LED,1);
      
      AD_Value0=analogRead(A0);
      AD_Value1=analogRead(A2);
      
      SendData(AD_Value0);
      SendData(AD_Value1);   
      
//      Serial.println(AD_Value0);
//      Serial.println(AD_Value1);   
   
      digitalWrite(LED,0);
    }
   }
}
页: [1]
查看完整版本: 关于Arduino发送6个AD转换结果组成字符串发送问题