Arduino +bluetooth+Comport

ruster93
Offline
Зарегистрирован: 05.12.2014

Доброго времени суток, возникла такая проблема:
Хочу написать осцилограф, передаю по bluetooth на компьютер вольтаж таким образом:
 

int voltage=0;
void setup()
{
  Serial1.begin(115200);
}
void loop()
{
  startbyte=Serial1.read();
  if(startbyte=='0')
  {
    Serial1.flush();
      
      voltage=analogRead(0);
 
      Serial1.write(voltage/256);
      Serial1.write(voltage%256);
    

  }
    
}

Но передает медленно(30Гц)

Часть принимающего кода на C#:
 

private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)
        {
 int data0, data1;
      
            if (!stop) {
           
                data0 = serialPort1.ReadByte();
                data1 = serialPort1.ReadByte();
                serialPort1.Write("0");
                  
                  
                    voltage = data0 * 256 + data1;
                    
                    now = DateTime.Now;
                    now_time = ((now.Hour * 60 + now.Minute) * 60 + now.Second) * 1000 + now.Millisecond - time_strat;
                  

                    myCurv1.AddPoint(now_time, voltage);
                   

                    xmin = now_time - millsec;
                    xmax = now_time;

                    
                    myPane1.XAxis.Scale.Min = xmin;
                    myPane1.XAxis.Scale.Max = xmax;
                    zedGraphControl1.AxisChange();
                    zedGraphControl1.Invalidate();
}
}

Основная проблема в том, что если использую кабель, то передается довольно быстро и частота порядка 120 Гц,

а вот когда передаю через bluetooth то частота всего 30.
Скорость bluetootha приличная, так что такой разницы не должно быть, в чем проблема?

NeiroN
NeiroN аватар
Offline
Зарегистрирован: 15.06.2013

Проблема в том что Блютус - пакетный протокол. Обьем пакетов у него большой а интервал передачи низкий - чтобы не засорять эфир. 30 вполне достаточно чтобы работали всякие мышки. На самом деле у него самая низкая скорость на этой частоте...

ruster93
Offline
Зарегистрирован: 05.12.2014

То есть ускорить никак нельзя? Какой тогда относительно недорогой способ беспроводной связи использовать?

NeiroN
NeiroN аватар
Offline
Зарегистрирован: 15.06.2013

Wi-Fi + UDP

 

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

nrf24l01 тоже быстро работает. проверял недавно скорость на уно. максимум выжал 600 кбит/с. с измерением аналогового входа все равно очень быстро будет. дешево и сердито

ruster93
Offline
Зарегистрирован: 05.12.2014

Судя по всему bluetooth, все же быстрый, а проблема в том, что private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e) вызывается очень медленно - когда она наконец вызвана, то в буфере порта пришло уже порядка 1000 сообщений, так что следует обрабатывать их скопом)