Easyelectronics.ru

Электроника для всех
Текущее время: 29 сен 2020, 03:59

Часовой пояс: UTC + 5 часов



JLCPCB – Прототипы печатных плат за $2/5шт. два слоя. $5/5шт. четыре слоя
Крупнейший производитель печатных плат и прототипов. Более 600000 клиентов и свыше 10000 заказов в день!
Получите скидку на почтовую отправку при первом заказе в JLCPCB!

Начать новую тему Ответить на тему  [ Сообщений: 199 ]  На страницу Пред.  1 ... 4, 5, 6, 7, 8  След.
Автор Сообщение
 Заголовок сообщения: Re: вопросы про Си
СообщениеДобавлено: 12 фев 2020, 20:59 
Старожил

Зарегистрирован: 26 ноя 2012, 10:28
Сообщения: 4729
Откуда: КЧР, поселок Нижний Архыз
При сериализации данных накладные расходы минимальны. Разве что ты собираешься мегабайты в секунду в линию забрасывать. Тогда, да - придется бинарный протокол использовать.
Цитата:
network order - любопытно, оно применимо в отношении усб?

А какая разница? Все равно тебе придется в big-endian формате данные от устройства к хосту и обратно передавать, иначе ты не застрахован от проблемы, если хост или девайс будет несколько другой конечности!
Цитата:
а на прикладном уровне на компе я работаю просто с com портом типа - там как эти пакеты образуются?

Когда ты в модуль ядра данного устройства пихаешь свои данные, он разбивает их на пакеты, пакетами и отправляет. Написал cat file > /dev/ttyACM0, и у тебя пакетами по 64 байта этот файл начал передаваться в устройство.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: вопросы про Си
СообщениеДобавлено: 12 фев 2020, 21:10 
Старожил

Зарегистрирован: 27 мар 2015, 01:22
Сообщения: 1951
goreprogrammist писал(а):
vt340, а на прикладном уровне на компе я работаю просто с com портом типа - там как эти пакеты образуются?

Если ты работаешь с com портом [пусть и виртуальным], то при чём тут usb
Не работай с com портом, работай с usb

_________________
mcu.goodboard.ru


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: вопросы про Си
СообщениеДобавлено: 12 фев 2020, 21:12 
Старожил

Зарегистрирован: 19 мар 2011, 05:05
Сообщения: 2955
хм, сейчас понял, что не обращал внимания. но там везде оперируют readchar или readline..
ну это мы еще посмотрим.
пока что наблюдаю kernel_task от кривой энумерации (играюсь тут) - загрузил систему..

на компе работать с усб - это ж наверное мегасложно. хотя интересно. будет мне новый челендж...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: вопросы про Си
СообщениеДобавлено: 12 фев 2020, 21:19 
Старожил

Зарегистрирован: 25 сен 2017, 10:57
Сообщения: 216
Откуда: Украина
goreprogrammist

Немного еще поправил:
Вложение:
USB-CDC-SES.7z [78.7 Кб]
Скачиваний: 32


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: вопросы про Си
СообщениеДобавлено: 12 фев 2020, 21:52 
Старожил
Аватара пользователя

Зарегистрирован: 11 апр 2016, 18:04
Сообщения: 3569
Откуда: Китай, Пекин
Eddy_Em писал(а):
Бинарные пакеты - зло! Т.к. придется преобразовывать их сначала в network order, а потом обратно. И очень аккуратно с упаковкой быть...
Самое правильное решение - сериализация данных. Гоняем туда-сюда текст, имеем кучу бонусов (в т.ч. тот, что можно ручками команды писать и в /dev/ttyxxx отправлять).


какая дичайщая дич.
ты точно просох, мож тебе отлежаться пока...

Бинарные пакеты - величайшее благо. затраты на преобразование минимальны.

Eddy_Em писал(а):
И очень аккуратно с упаковкой быть...

только тупийцы суют структуры в сеть, как есть...

Eddy_Em писал(а):
Гоняем туда-сюда текст, имеем кучу бонусов (в т.ч. тот, что можно ручками команды писать и в /dev/ttyxxx отправлять).

писать микроконтроллеру руками занятие только не совсем невменяемых.

_________________
unirail.org


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: вопросы про Си
СообщениеДобавлено: 12 фев 2020, 21:55 
Старожил
Аватара пользователя

Зарегистрирован: 11 апр 2016, 18:04
Сообщения: 3569
Откуда: Китай, Пекин
goreprogrammist писал(а):
не понятно, как разделять пакеты.

читать byte stuffing framing активно использую в AdHoc протоколе
но для USB это перебор
поскольку там жеж гарантия очередности и защита от сбоев, железобетонно как TCP

_________________
unirail.org


Последний раз редактировалось cheblin 12 фев 2020, 22:08, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: вопросы про Си
СообщениеДобавлено: 12 фев 2020, 22:01 
Старожил
Аватара пользователя

Зарегистрирован: 11 апр 2016, 18:04
Сообщения: 3569
Откуда: Китай, Пекин
Цитата:
чеблин тут бы сказал.. network order - любопытно, оно применимо в отношении усб?

эдя гонит
просто выбери себе любой endian и придерживайся его.
совершенно не имеет значения какой, поскольку пихать в сеть струкутуры бред. который кончается стразу как только приложение начинает развиваться.
текстовый протокол дичь в квадрате.

_________________
unirail.org


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: вопросы про Си
СообщениеДобавлено: 12 фев 2020, 22:05 
Старожил
Аватара пользователя

Зарегистрирован: 11 апр 2016, 18:04
Сообщения: 3569
Откуда: Китай, Пекин
Цитата:
или девайс будет несколько другой конечности!

да, не застрахован. поэтому делай так

работает вне зависимости от того какой endian устройства

_________________
unirail.org


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: вопросы про Си
СообщениеДобавлено: 12 фев 2020, 22:11 
Старожил

Зарегистрирован: 19 мар 2011, 05:05
Сообщения: 2955
тэкс. должно заработать? попробую чуть позже.
у меня с тем примером (http://we.easyelectronics.ru/STM32/stm3 ... porta.html)
вопрос возник.
я думал, я попадаю в обработчик void EP3_OUT_Callback(void) по приходу целого пакета.
внутри там есть такое
Код:
uint16_t USB_Rx_Cnt;
  uint16_t i;
 
  /* Get the received data buffer and update the counter */
  USB_Rx_Cnt = USB_SIL_Read(EP3_OUT, USB_Rx_Buffer);

которое сводится к
Код:
uint32_t USB_SIL_Read(uint8_t bEpAddr, uint8_t* pBufferPointer)
{
  uint32_t DataLength = 0;

#ifndef STM32F10X_CL

  /* Get the number of received data on the selected Endpoint */
  DataLength = GetEPRxCount(bEpAddr & 0x7F);
 
  /* Use the memory interface function to write to the selected endpoint */
  PMAToUserBufferCopy(pBufferPointer, GetEPRxAddr(bEpAddr & 0x7F), DataLength);
return DataLength;

но вызывается, по ходу дела, несколько раз? или это у меня дебаггер задержки создает - поэтому получается каша?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: вопросы про Си
СообщениеДобавлено: 12 фев 2020, 22:16 
Старожил

Зарегистрирован: 26 ноя 2012, 10:28
Сообщения: 4729
Откуда: КЧР, поселок Нижний Архыз
Чоблин, твоя тупость как обычно не имеет преград!
Цитата:
писать микроконтроллеру руками занятие только не совсем невменяемых.

А отлаживаться как? Ну ты и тупой…


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: вопросы про Си
СообщениеДобавлено: 12 фев 2020, 23:00 
Старожил
Аватара пользователя

Зарегистрирован: 13 янв 2018, 21:36
Сообщения: 1557
goreprogrammist писал(а):
и про бинарные протоколы: нужно что-нибудь простейшее. гнать в одну сторону четыре значения АЦП, обратно - иногда несколько байт. не понятно, как разделять пакеты.
HID в чистом виде.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: вопросы про Си
СообщениеДобавлено: 12 фев 2020, 23:05 
Старожил

Зарегистрирован: 26 ноя 2012, 10:28
Сообщения: 4729
Откуда: КЧР, поселок Нижний Архыз
В общем, CDC у меня нормально заработал. Основной косяк был в моем коде (я на ZLP не снимал NAK, поэтому и стопорился прием данных).
А еще обнаружил какой-то странный косяк в USART: несмотря на двойную буферизацию и отправку данных по DMA, при слишком бешеных потоках DMA "сходит с ума" и выдает мне дамп флеша. А если между отправками вставить строчку
for(int i = 0; i < 72000; ++i) nop();
то все ОК.
Хрень какая-то...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: вопросы про Си
СообщениеДобавлено: 12 фев 2020, 23:06 
Старожил

Зарегистрирован: 26 ноя 2012, 10:28
Сообщения: 4729
Откуда: КЧР, поселок Нижний Архыз
VladislavS писал(а):
HID в чистом виде.

Для работы с HID нужно libusb, да и напрямую из баш-скриптов ничего не сделаешь...
Поэтому CDC - наше фсьо!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: вопросы про Си
СообщениеДобавлено: 12 фев 2020, 23:21 
Старожил
Аватара пользователя

Зарегистрирован: 13 янв 2018, 21:36
Сообщения: 1557
Eddy_Em писал(а):
Для работы с HID нужно libusb
Темнота... HIDAPI.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: вопросы про Си
СообщениеДобавлено: 12 фев 2020, 23:33 
Старожил

Зарегистрирован: 26 ноя 2012, 10:28
Сообщения: 4729
Откуда: КЧР, поселок Нижний Архыз
Можно подумать, прослойка между libusb и ПО - это не libusb…
А для CDC никаких вообще левых библиотек не нужно. Тупо открыл файл, почитал/пописал, закрыл файл.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: вопросы про Си
СообщениеДобавлено: 12 фев 2020, 23:56 
Старожил
Аватара пользователя

Зарегистрирован: 13 янв 2018, 21:36
Сообщения: 1557
Eddy_Em писал(а):
Можно подумать, прослойка между libusb и ПО - это не libusb…

Нет там никакой libusb. Запускается на всём что умеет компилировать. На QT работает.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: вопросы про Си
СообщениеДобавлено: 13 фев 2020, 00:00 
Старожил

Зарегистрирован: 19 мар 2011, 05:05
Сообщения: 2955
hid - это хорошо и наверное в тему, но я боюсь тут совсем зарыться. посему пусть пока ком-порт.
пытаюсь разобраться с тем вопросом шестью сообщениями выше - не понимаю, какого фига я в терминале отправляю два символа (два байта получается, отключил \r\n) - при этом в колбек попадаю не один раз, а два или три...

qt. в моем случае это будет swift))


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: вопросы про Си
СообщениеДобавлено: 13 фев 2020, 00:13 
Старожил
Аватара пользователя

Зарегистрирован: 13 янв 2018, 21:36
Сообщения: 1557
goreprogrammist писал(а):
какого фига я в терминале отправляю два символа
В терминале каждое нажатие клавиши сразу отправляется отдельным пакетом.

Show QT HIDAPI


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: вопросы про Си
СообщениеДобавлено: 13 фев 2020, 00:14 
Старожил

Зарегистрирован: 26 ноя 2012, 10:28
Сообщения: 4729
Откуда: КЧР, поселок Нижний Архыз
VladislavS писал(а):
Нет там никакой libusb. Запускается на всём что умеет компилировать. На QT работает.

Ну, значит, еще один аналог libusb, т.е. вообще нахер не нужная говнота!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: вопросы про Си
СообщениеДобавлено: 13 фев 2020, 00:41 
Старожил
Аватара пользователя

Зарегистрирован: 13 янв 2018, 21:36
Сообщения: 1557
А Баба Яга, как всегда, против :))) Во всех ОС есть интерфейс к стандартным USB-классам, а иначе нафиг они были бы нужны?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: вопросы про Си
СообщениеДобавлено: 13 фев 2020, 00:52 
Старожил

Зарегистрирован: 26 ноя 2012, 10:28
Сообщения: 4729
Откуда: КЧР, поселок Нижний Архыз
Стандартный интерфейс - это модули ядра и libusb. Все остальное - ненужное говно!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: вопросы про Си
СообщениеДобавлено: 13 фев 2020, 00:56 
Старожил
Аватара пользователя

Зарегистрирован: 13 янв 2018, 21:36
Сообщения: 1557
Высрался? Подотри жопу и скажи, кто ты такой чтобы решать кому что и как программировать?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: вопросы про Си
СообщениеДобавлено: 13 фев 2020, 01:04 
Старожил

Зарегистрирован: 26 ноя 2012, 10:28
Сообщения: 4729
Откуда: КЧР, поселок Нижний Архыз
del


Последний раз редактировалось Eddy_Em 13 фев 2020, 10:19, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: вопросы про Си
СообщениеДобавлено: 13 фев 2020, 01:17 
Старожил

Зарегистрирован: 19 мар 2011, 05:05
Сообщения: 2955
эдди, лучше как главный по линуксам подскажи строчку или скрипт какой, чтоб ненадолго подключиться к порту и в файл скормить? (любопытно по-быстрому оценить, сколько оно может передавать данных)
cat /dev/usb.device > /a.log
и когда нужно стопануть - ctrl+c?

для usb-com, похоже, удобнее использовать текстовые протоколы. ну и хрен бы с ним.
елси запал не пропадет - будет прикольно написать приложение без ком-порта, со своим hid классом (и тогда всем придется либо на мой софт подсаживаться, либо реверс-инженирить протокол - гыгыгы)
кстати, human interface device (если я правильно помню) - ну и как это перевести? и каким боком тут human?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: вопросы про Си
СообщениеДобавлено: 13 фев 2020, 07:33 
Старожил
Аватара пользователя

Зарегистрирован: 11 апр 2016, 18:04
Сообщения: 3569
Откуда: Китай, Пекин
Цитата:
удобнее использовать текстовые протоколы

это пока, не вышел за пределы hello world...

_________________
unirail.org


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 199 ]  На страницу Пред.  1 ... 4, 5, 6, 7, 8  След.


Часовой пояс: UTC + 5 часов


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB