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, все же быстрый, а проблема в том, что
privatevoidserialPort1_DataReceived(objectsender, SerialDataReceivedEventArgs e) вызывается очень медленно - когда она наконец вызвана, то в буфере порта пришло уже порядка 1000 сообщений, так что следует обрабатывать их скопом)