Перейти к содержанию
    

=F8=

Свой
  • Постов

    566
  • Зарегистрирован

  • Посещение

Репутация

0 Обычный

Информация о =F8=

  • Звание
    Знающий
    Знающий
  • День рождения 16.10.1972

Контакты

  • Сайт
    Array
  • ICQ
    Array

Информация

  • Город
    Array

Посетители профиля

2 136 просмотров профиля
  1. Проделайте следующий эксперемент: запускаете sagem как tcp сервер и пытаететесь подключится к нему не слишком терпеливым клиентом. Клиент посылает запрос на открытие соединения, но не дождавшись ответа сервера закрывает соединение. В таком поведении клиента нет абсолютно ничего преступного. Что должен сделать вменяемый сервер с таким полуоткрытым соединением(процедура установки соединения не закончена!!!)? - сбрость по таймауту. Что делает sagem? В лучшем случае один из сокетов остается занятым навсегда, в худшем и ч.с.х. наиболее частом - перестает вообще принимать входящие соединения.
  2. Посмотрел функцию отправки вот ее кусок strcpy(p_buffer, strAT_KTCPSND); p_buffer += 11; p_buffer = i_to_a((char*)p_buffer, socket); *p_buffer++=','; p_buffer = i_to_a(p_buffer, tx_socket_counter); *p_buffer = 0; if((PutCommandToGsm(p_gsm_port->TxCmdBuffer, OK_GSM_FLAG|ERR_GSM_FLAG|CME_ERR_GSM_FLAG|NO_CARRIER_GSM_FLAG|CONNECT_GSM_FLAG, 5000, NULL,NULL) & (OK_GSM_FLAG | CONNECT_GSM_FLAG))==0) { return -1;} vTaskDelay(50); while(tx_socket_counter != tx_counter){// Тут отправляю данные } while(GetFreeBufferSize(GSM_UART_PORT) != GSM_TX_BUFFER_SIZE); //А вот это самое интересное, жду пока уйдет последний байт из буфера (размер буфера 1024). Видимо это было важно что-бы последующая пауза в 50 мс перед EOF была именно после того как будет передан последний байт. vTaskDelay(50); if(!PutEOF())//Отправляю EOF. { return -1; }
  3. Уражите в команде кол-во байт которое хотите отправить - второй параметр. И если можете отказаться от этого "чуда" - откажитесь. Его встроенный стек столь чудесен, что пришлось прикручивать внешний. PS Чтоб не создавать новую тему. Модуль работает в режиме мультиплексирования. Пытаюсь отправить смс с подтверждением о доставке. Вместо подтверждения, примерно в то время когда должно прийти подверждение получаю CME ERROR 24.
  4. Пытаюсь разобраться с gcc, столкнулся с такой проблеммой: к примеру имеюстя классы class thread_c{ public: int i; virtual void Thread(){}; static void startThread(void *arg); thread_c(); virtual ~thread_c(){}; }; class test_c : public thread_c { public: void Thread(); }; Во первых если объявить Thread абстрактным(virtual void startThread(void *arg)=0) то при компиляции появляется куча зависимостей типа _exit, _kill, _write итд. Похоже, что начинают использоваться библиотечные функции с поддержкой исключений (сама программа компилься с флагом no-exceptions). Можно с этим как-то бороться? Добавть пустую функцию, конечно, не большая проблема, но все-таки... Во-вторых. Я использую FreeRTOS реализаю кучи. Для чего переопределил глобальные new/delete. Пока обекты создаюся динамически то все OK. Но стот обявить объект статически то при инициализации обекта начинает использоваться встроенный менеджер памяти - сужу по тому, что линкер начиеает просить _sbrk насколько понял это функция которая проверяет не встретелись ли еще куча со стеком. Происходит это только в том случае если класс имеет виртуальные функции. Т.е. классы компилятор с классами без виртуальных функций обращяется как с реальными статическими обектами, а статические объекты с виртуальными функциями это лишь видимсть статических объектов? PS И еще, кто-небуть пробовал использовать semihosting на arm7 и FreeRTOS? Единственное, что получилось это перенести вызов vPortYieldProcessor на undef instruction может есть какой-то более коректный способ?
  5. STM32F107 + RTL8201 + lwip-1.4.0

    Как такового драйвера для phy нет. Просто там-же где выполняете инициализацию ehternet контроллера инициализируете и регистры phy. LwIP общается с железом через указатели на функции низкоуровневого ввода-вывода в структуре netif. Смотрите файл stm32x_ethernet.c http://bit.ly/stf12_freertos_commons . А вот тут весь проект http://developers.stf12.net/just-another-eclipse-demo-str91x там не только str91 есть и порт для stm)
  6. LPC1788, lWIP

    Это где Вы такое вычитали? Во-первых принимающая сторона не просит повторить, это отправитель сам повторяет передачу если не дожидается ASK от получателя. Во-вторых принимающая сторона не отбрасывает H+1, а ждет H. Точней говоря отбрасывают только самые усеченные версии стеков которым просто некуда складировать пакеты. В каждом пакете содержится порядковый номер в в потоке в байтах. Если к примеру пришел пакет с номером 100 длинной 50 байт, если в потоке нет разрывов то получатель отправляет подтверждение приема 150 байт, затем, к примеру, приходит пакет с номером 200 длинной 50 байт, то TCP понимает, что 50 байт где-то потерялось и ждет их. Затем когда пакет с номером 150 длинной 50 приходит получатель отправляет отправителю подтверждение приема 250 байт(Один раз!). Сори напутал, порядковый номер это номер первого байта пакета, а не последнего. Отредактировал.
  7. LPC1788, lWIP

    Роутер тут скорей всего нипричем. В любом случае изменение порядка следования пакетов в tcp соединении это не преступление - принимающая сторона должна(если позволяют ресурсы) принять все пакеты, высторить их по-порядку и отправить ask. У меня тоже бывало нарушение порядка пакетов, но к ретрансмитам это не приводило. Кстати попробуйте, для проверки, установить в конфигурации TCP_WND (1 * TCP_MSS) (ищите в lwipopts.h если его там нет то или добавьте или меняйте непосредственно в opt.h) это уберет окно и порядок пакетов точно не будет нарушен. Да, и смотрите за кодом возврата netconn_write - там ведь может быть и разрыв соединения и нехватка памяти.
  8. LPC1788, lWIP

    Что значит к роутеру? Плату в lan роутера, wan роутера в лок. сеть? Если так то плата ни причем, контрольные суммы ethernet в этом случае генерит роутер.
  9. Заработал CMUX с sim300. Откатился на на одну из первых версий - работает. Оказалось у меня там была ошибка - после CMUX вычитывал все из порта в течении~2сек. Потом это исправил. Кстати нигде не находил ничего по поводу этих F9 F9 F9 F9 F9, ни Cintrion, ни Telit, ни Sagmem такого не выдают. В описании протокола такого не нашел. Симкомовское ноухау?
  10. SIMCOM_SIM300D Revision:1008B16SIM300D32_SST34HF3284 Сорри перепроверил - тоже, что что и у вас F9 F9. Раньше тестил на каком-то IRZ модеме на SIM300, завтра попробую его найти.
  11. А вот про GREG как-раз ничего не скажу. Использовал его только в режиме CREG=0.
  12. 4 канала - посмотрите на картинку в разделе 1.2. Каждый канал должен работать индивидуально(но не обязательно что-бы все каналы были симметричными), если это не так варианта два - или ждать новой прошивки где возможно это исправят или работать с тем, что есть. PS Вы-бы описали ситуацию по-подробней - про какие именно сообщения идет речь. SIM900 в mux режиме не юзал, но с SIM300 проблем не было.
  13. Подключите модем к компу. На компе есть TCP/IP стек. Подайте команду AT+CFUN=0. Сработало? Теперь попробуйте установить соединение не получается? Теперь аналогичные действия для CFUN = 7. Не могу сказать однозначно про BGS2, но MC52i в 7-м режиме соединение устанаваливает, а поскольку оба Cinterion-ы то... А зря.
×
×
  • Создать...