Arduino +bluetooth+Comport
- Войдите на сайт для отправки комментариев
Пт, 05/12/2014 - 22:14
Доброго времени суток, возникла такая проблема:
Хочу написать осцилограф, передаю по 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 приличная, так что такой разницы не должно быть, в чем проблема?
Проблема в том что Блютус - пакетный протокол. Обьем пакетов у него большой а интервал передачи низкий - чтобы не засорять эфир. 30 вполне достаточно чтобы работали всякие мышки. На самом деле у него самая низкая скорость на этой частоте...
То есть ускорить никак нельзя? Какой тогда относительно недорогой способ беспроводной связи использовать?
Wi-Fi + UDP
nrf24l01 тоже быстро работает. проверял недавно скорость на уно. максимум выжал 600 кбит/с. с измерением аналогового входа все равно очень быстро будет. дешево и сердито
Судя по всему bluetooth, все же быстрый, а проблема в том, что
private
void
serialPort1_DataReceived(
object
sender, SerialDataReceivedEventArgs e) вызывается очень медленно - когда она наконец вызвана, то в буфере порта пришло уже порядка 1000 сообщений, так что следует обрабатывать их скопом)