Страница 15 из 18 ПерваяПервая ... 51314151617 ... ПоследняяПоследняя
Показано с 141 по 150 из 177

Тема: Работа с USB Flash карт в новом ПЛК110

  1. #141
    Пользователь
    Регистрация
    31.08.2017
    Адрес
    Воткинск
    Сообщений
    15

    По умолчанию

    Вот именно на Си я читаю и пишу нормально без каких либо проблем в качестве отладки использую плату DISCAVERI STM32F407VG там вот не возникает вопросов как прочитать левый файл , и обработать , хоть по байтно хоть как , для чего мне сначала читать строчку , далее ложить ее в буфер а потом из этой строчки еще и выковыривать нужные мне данные , нельзя как то по проще все реализовать

  2. #142
    Пользователь
    Регистрация
    31.08.2017
    Адрес
    Воткинск
    Сообщений
    15

    По умолчанию

    Видео уроки они полезные как это реализовываеться , если появился новый интерфейс , новая шина , то к ней нужна полная техническая документация , по причине того что везде пишут и говорят что можно читать левые файлы с флешки , в итоге
    приобрели не можем победить звоним в тех поддержку , техподдержка задает глупый вопрос , а зачем вам читать левые файлы с флешки записанные на ПК , ЕСЛИ ИНТЕРЕСНО Я МОГУ ВЫЛОЖИТЬ НЕ ОДИН ПРИМЕР РЕАЛИЗАЦИИ ФЛЕШ на отладке STM и там все просто и понятно , и документация есть , и примеров гора , и форум у них такой что просто если человек немного не понимает то в течении какого то времени появляеться его пример работы , и это еще не все плюшки , я промолчю про реализацию виртуального COM порта , ну смысл не в этом , та документация котороя есть она не полная , и один пример с архивацией , а как прочитать файл записанный на ПК такого примера нет , и начинаються вот такие вопросы , и они будут эти вопросы

  3. #143
    Пользователь
    Регистрация
    31.08.2017
    Адрес
    Воткинск
    Сообщений
    15

    По умолчанию

    в примере как надо писать OwenFileOpenAsync('usb:work\recept.txt','r',ADR(ha ndle)) hendle - возвращает 0 , значит ошибка как я понимаю

  4. #144
    Пользователь
    Регистрация
    31.08.2017
    Адрес
    Воткинск
    Сообщений
    15

    По умолчанию

    Добрый день вопрос есть функция , Функция SysFileReadAsync есть к ней ряд входных данных , и вот что прикольно я сам должен угадать порядок установки , и где смотреть пример по работе с этой функцией Ссылаться на документацию что там все есть не надо вот что там написано Функция SysFileReadAsync
    Функция чтения данных из файла, открытого с помощью SysFileOpenAsync,возвращает значение типа DWORD–количество считанных байт данных.
    Входные переменные:
    File–типа DWORD–дескриптор файла, число, которое возвратила функция SysFileOpenAsync;
    Buffer–адрес буфера, содержащего данные, которые необходимо записать в файл, число, которое возвратила функция ADRс аргументом –именем переменной-буфера; тип–массив, например, массив байт или строка.
    Size–типа DWORD–размер буфера в байтах, можно использовать функцию SIZEOFс аргументом –именем переменной-буфера.
    Использование функции –аналогично SysFileWriteAsync(см. рисунок 4.9).

  5. #145

    По умолчанию

    SysFileReadAsync === SysFileRead + асинхронность. Чего там угадывать то. И пример есть.
    Тролль-наседка, добрый, нежный и ласковый

  6. #146
    Пользователь Аватар для capzap
    Регистрация
    25.02.2011
    Адрес
    Киров
    Сообщений
    10,224

    По умолчанию

    Цитата Сообщение от АлександрSTM Посмотреть сообщение
    Добрый день вопрос есть функция , Функция SysFileReadAsync есть к ней ряд входных данных , и вот что прикольно я сам должен угадать порядок установки
    не нра угадывать, пишите прямо hFile:=handle,pBuffer:=ADR(Buffer) и т.д.
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

    среди успешных людей я не встречала нытиков
    Барбара Коркоран

  7. #147
    Пользователь
    Регистрация
    31.08.2017
    Адрес
    Воткинск
    Сообщений
    15

    По умолчанию

    Цитата Сообщение от capzap Посмотреть сообщение
    не нра угадывать, пишите прямо hFile:=handle,pBuffer:=ADR(Buffer) и т.д.
    Тогда вопрос в следующим , как мне посмотреть что приходит в буфер , точнее как мне разложить и вывести все на монитор , на Си знаю как sprintf() и гоним куда угодно хоть в COM порт хоть на дисплей , к стати дисплей есть установлен и работает ИП320 , я не силен в этом языке так что простите меня за такие вопросы

  8. #148
    Пользователь Аватар для capzap
    Регистрация
    25.02.2011
    Адрес
    Киров
    Сообщений
    10,224

    По умолчанию

    Цитата Сообщение от АлександрSTM Посмотреть сообщение
    Тогда вопрос в следующим , как мне посмотреть что приходит в буфер , точнее как мне разложить и вывести все на монитор , на Си знаю как sprintf() и гоним куда угодно хоть в COM порт хоть на дисплей , к стати дисплей есть установлен и работает ИП320 , я не силен в этом языке так что простите меня за такие вопросы
    в онлайн режиме в окне объявлений раскрываете массив нажатием на плюсик и смотрите какие данные в ячейках. Можно это всё перевести в строку и вывести на экран, но всё зависит от наличия опыта и знания где посотреть. В библиотеке на oscat.de много функция по работе со строками
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

    среди успешных людей я не встречала нытиков
    Барбара Коркоран

  9. #149

    Question

    Добрый день!
    На втором этапе появляется статус
    Код:
    ASYNC_QUERY_FULL:= -1001, (*>5 запросов в очереди*)
    - как с этим бороться?
    Код:
     CASE g_LogState OF
      0:	(*Открытие файла - этап 1*)
        g_LogRes := OwenFileOpenAsync( g_LogFileLog, 'a', ADR(g_LogHandle));
        IF g_LogRes = ASYNC_WORKING THEN g_LogState := 1;
        END_IF
    
      1:	(*Открытие файла - этап 2*)
       g_LogRes := OwenFileOpenAsync( g_LogFileLog, 'a', ADR(g_LogHandle));
       IF g_LogRes = ASYNC_DONE  THEN
        IF g_LogHandle<>0 THEN	g_LogState := 2;
        ELSE				g_LogState := 0;
        END_IF
       ELSIF g_LogRes<0 THEN
        g_LogState := 0;
       END_IF
     .....

  10. #150

    По умолчанию

    О библиотеке OwenLibFileAsync.

    Читаю только что скачанную документацию.
    Какая-то путаница с возвращаемыми типами у функций:

    Функция SysFileOpenAsync
    Функция возвращает значение типа DWORD

    Функция SysFileCloseAsync
    возвращает значение типа BOOL

    Функция SysFileWriteAsync
    возвращает значение типа DWORD – количество записанных байт данных

    А в примерах функции вызываются в виде:

    res:=OwenFileXxxAsync(xxx);

    переменная res имеет тип ASYNC_RET_VALUE (в документации отсутствует описание этого типа, догадайся сам)

    Ну ладно, ASYNC_RET_VALUE, допустим, совместимо с DWORD (как по мне, должна быть ошибка), но DWORD и BOOL один и тот же тип?

    Примеры с IF-ами и CASE-ми выглядят громоздко и запутанно.

    Я бы хотел написать так:
    Код:
    (***********************************************************)
    VAR
        f_work: T_F_WORK; (*перечислимый тип: открыть, закрыть, записать и т.д.*)
        res: ASYNC_RET_VALUE;
    END_VAR
    
    (*вызываем нужную функцию*)
    
    CASE f_work OF
    
    	F_OPEN:
    			res := OwenFileOpenAsync(f_name,'a',ADR(f_handle));
    	F_CLOSE:
    			res := OwenFileCloseAsync(f_handle, ADR(f_result));
    	F_WRITE:
    			res := OwenFileWriteAsync(f_handle, ADR(f_buff), SIZEOF(f_buff), ADR(f_result));
    	F_NONE: ;
    
    END_CASE
    
    (*обрабатываем результат*)
    
    CASE res OF
    
    	ASYNC_WORKING: (*ждем...*);
    
    	ASYNC_DONE:
    		f_work := F_NONE;
            (*проверка на ошибки*)
              (*...*);
        (*а еще res возвращает некоторые ошибки!*)
        (*как к ним относиться, неясно*)
        (*но ведь как-то надо обработать!*)
    (*  ASYNC_PAUSED:
        ASYNC_QUERY_FULL:
        ASYNC_BLOCK_ACCESS:
        ASYNC_GENERAL_ERROR:
        ASYNC_INVALID_HANDLE_ERROR:
    *)
    END_CASE
    (********************************************************************)
    Гораздо компактнее и проще.

    И опять, в описании не сказано, имеется ли логическая переменная для возврата наличия ошибки для всех функций (в старом описании такая переменная имелась). А ведь это позволит написать обработку файловых ошибок в одном месте, а не размазывать по всей программе.

    Документацию надо бы поправить и дополнить.
    Последний раз редактировалось Евгений Пашигоров; 01.10.2019 в 08:43.

Страница 15 из 18 ПерваяПервая ... 51314151617 ... ПоследняяПоследняя

Похожие темы

  1. Работа с USB флешками в ПЛК110 [м02]
    от alexx12 в разделе ПЛК1хх
    Ответов: 1
    Последнее сообщение: 22.12.2015, 18:28
  2. Библиотеки для работы ПЛК110 с USB
    от Ilych в разделе ПЛК1хх
    Ответов: 12
    Последнее сообщение: 30.05.2015, 00:14
  3. Ответов: 12
    Последнее сообщение: 25.12.2014, 10:55
  4. Связь ПК с ПЛК110-30 при помощи USB
    от Иван Юрьевич в разделе ПЛК1хх
    Ответов: 6
    Последнее сообщение: 17.12.2014, 12:19
  5. связь с плк110 по Usb-com
    от Валерий Бурик в разделе ПЛК1хх
    Ответов: 2
    Последнее сообщение: 05.05.2010, 09:12

Ваши права

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