Создание собственной системы стабилизации
все равно надо файлики конфигурить на компе
Тут уже выбор будет, или дома настроил и поехал без компа, или с компом, но опять же без “ГУИ” можно обойтись…
(все ж освоить писанину под винду не так то и просто, времени уйдет уйма…)
ткните носом где почитать
именно про полосу радиоканала ? , а так полосы разные бывают… (не понял).
именно про полосу радиоканала ?
да-да… википедия чёт не вставляет…
Еще один проект “следящего” коптера.
Из видео не понял видит ли он препятствия на своем пути.
Еще один проект
Pixhawk разобрали 😃 0.54
да-да… википедия чёт не вставляет…
тогда нужно чуть больше конкретики в вопросе… - применительно к чему именно: передатчики,приемники,антенны… все имеет значение…
Тут уже выбор будет, или дома настроил и поехал без компа, или с компом, но опять же без “ГУИ” можно обойтись…
По сути выбора то и нет, про запас кучу файликов не наконфигуришь с собой в поле.
Гуи под винды писать не долго когда инструменты MSVC да MSDN.
Гуи под винды писать не долго
“всё- ПРОСТО если знаешь- КАК” (китайская мудрость) 😃.
могу недоделанную но рабочую гуи для мультивия на делфи дать
китайская мудрость
Если нужна будет консультация я помогу. Если уже есть какой-то протокол общения с контроллером для которого нужно сделать простую обертку (прочитать/записать настойки, графики от датчиков показать ), без экзотически графических контролов, то там делов на неделю со всей отладкой.
Кто-нибудь ковырял сурцы мисион планера? Как в него можно заинтегрировать другой скриптовый движок? Накалякал я тут скриптовый движок для алексмосовских плат, который позволяет скриптово рулить гимблами. Но как отдельное приложение sites.google.com/site/rmotiongmb/ как-то не айс хочется большей автоматизации.
Если нужна будет консультация я помогу. Если уже есть какой-то протокол общения с контроллером
Пока я пойму: что такое “скриптовый движок” и “гимблы” уверен пройдет немало времени, а может и вечность…(когда эти термины появились, я уже давно закончил свое образование в институте 😃)…
Тут очень умные дядьки 😃). А никто в винде с COM портом не воевал? Сейчас событие “datareceived”
msdn.microsoft.com/…/system.io.ports.serialport.da…
винда дергает раз в 15 байт в буфере или ~7 миллисекунд, скорость(19200). А низзя винапи пнуть чтобы на каждый байт вызывала? Или в мультизадачной системе это анрыл и не выпендриваясь сделать на микро контроллере? Как на тойже ардуине мега с этим никто не проверял? Совсем нет время на изучение мат части 😦
ЗЫ задача максимально синхронизировать 4 COM порта… как можно точнее… Сори что не про коптеры…
Тут очень умные дядьки ). А никто в винде с COM портом не воевал? Сейчас событие “datareceived” msdn.microsoft.com/ru-ru/libr...vs.110).aspx винда дергает раз в 15 байт в буфере или ~7 миллисекунд, скорость(19200). А низзя винапи пнуть чтобы на каждый байт вызывала? Или в мультизадачной системе это анрыл и не выпендриваясь сделать на микро контроллере? Как на тойже ардуине мега с этим никто не проверял? Совсем нет время на изучение мат части ЗЫ задача максимально синхронизировать 4 COM порта… как можно точнее… Сори что не про коптеры…
Посмотрите в сторону размера буфера FIFO в настройках драйвера COM порта (кнопка “дополнительно”). Если драйвер FTDI, то там еще есть настройка времени Latency timer. instructables.com/…/Reducing-FTDI-Serial-Latency/
Суть Latecy timer - Это время, через которое вы получите событие о новых данных, не зависимо от того, заполнился буфер или нет.
Посмотрите в сторону размера буфера FIFO в настройках драйвера COM порта
Тут я не вьехал. В C# в SerialPort есть размер буфера чтения, но она его игнорирует. Ставлю скорость 115200 и буфер 1000, а по факту буфер вообще 4 килобайта и боюсь что винда просто не успевает(на каждый вызов события или в петле если синхронно читать). Спасибо, в дровах попробую. COM порт железный, там мамка т.н. встраиваемая у нее 8 железных COM 😃.
Да и попробую ftdi хрен с ними с железными, в них-то такой настройки я не видел…
Тут я не вьехал. В C# в SerialPort есть размер буфера чтения но она его игнорирует. Ставлю скорость 115200 и буфер 1000 а по факту буфер вообще 4 килобайта и боюсь что винда просто не успевает(на каждый вызов события или в петле если синхронно читать). Спасибо в дровах попробую. COM порт железный, там мамка т.н. встраиваемая у нее 8 железных COM .
c# для этого использовать наверное жестоко. Попробуйте реализовать на C или другом языке.
c# для этого использовать наверное жестоко. Попробуйте реализовать на C или другом языке.
Там проект весь на C# хотя ничто не мешает DLL ку сделать на С. Это хотел в первую очередь проверить, просто мне кажеться все же особенности винды а не .NET
Алексей а как на тех же “ардуинах”(плату разводить времяни тоже нет 😃) там можно каждый байт считать? не пробовали случайно? Если можно это правильнее чем С на винде…
И еще раз спасибо за отклик 😃
Алексей а как на тех же “ардуинах”(плату разводить времяни тоже нет ) там можно каждый байт считать? не пробовали случайно? Если можно это правильнее чем С на винде… И еще раз спасибо за отклик
Можете хоть каждый бит ловить )))
Можете хоть каждый бит ловить )))
Вот не сомневался что где-где а тут опытные умные дядьки помогут 😃)
я просто по базам и гуям, а тут пришлось 😃)
винда дергает раз в 15 байт в буфере или ~7 миллисекунд, скорость(19200). А низзя винапи пнуть чтобы на каждый байт вызывала? Или в мультизадачной системе это анрыл
Можно надо только самому реализовать чтение с ком порта со своим блэк джеком и шлюхами со своими событиям, в отдельных потоках. В котом будет крутиться ReadFile с нужным размером буфера. Получили данные послали события об этом главному потоку.
Открывать ком порт и читать из него:
::CreateFile(_T("\\\\.\\COM1"), GENERIC_READ | GENERIC_WRITE, NULL, 0, OPEN_EXISTING, NULL, NULL);
Открывать ком порт и читать из него:
угу, погуглю спасибо
влезу и я…
в винде (я про делфи) можно ловить хоть каждый байт, это проблем не создает - в том случае если ты ждеш, но тогда сама программа висит.
намного удобнее загонять все в буфер нужного размера, который потом просто парсить.
//Чтение данных из порта
function TMainForm.PortReadStr(DataSize:integer):string;
var BufStr:string;
begin
BufStr:='';
try
//Если есть соединение с портом читаем данные
if PortConnect_ then ComPort.ReadStr(BufStr,DataSize);
except
end;
PortReadStr:=BufStr;
end;
//Запись команды Command в порт, и чтение ответа по истечению TimeOut
//Запись команды и чтение будет производится до тех пор, пока не
//будет получен ответ, или количество циклов будет болше SendCount
//Результатом функции является ответ
Function TMainForm.WriteComand(Command:string;SendCount:Integer;TimeOut:Integer):string;
var i:byte;
AnswStr:string;
begin
WriteComand:='';
//Пишем данные
PortWriteStr(Command);
Delay(TimeOut);
//читаем
AnswStr:=PortReadStr(1024);
i:=1;
//если нет ответа и количество попыток не истекло
while (SendCount>i) and (length(AnswStr)=0) do
begin
//Пишем данные
PortWriteStr(Command);
Delay(TimeOut);
//читаем
AnswStr:=PortReadStr(1024);
inc(i);
end;
WriteComand:=AnswStr;
end;
в данном случае - отсылаем запрос и ждем определенное время на ответ и читаем буфер.
в винде (я про делфи) можно ловить хоть каждый байт, это проблем не создает
Я вот тоже так думал, но C# чета не хочет. ComPort это какой unit в Delphi? сколько лет ее юзал но не приходилось 😃)
А с 4 мя ком полюбому многопоточно надо общаца, либо оно само асинхронно на событиях, либо руками многопоточно(что коряво КМК)… Com можно открывать/закрывать тока из основоного потока, иначе оно ругаецца 😃