Страница 372 из 711 ПерваяПервая ... 272322362370371372373374382422472 ... ПоследняяПоследняя
Показано с 3,711 по 3,720 из 7101

Тема: CODESYS V3.5. Вопросы и ответы

  1. #3711
    Супер Модератор Аватар для Евгений Кислов
    Регистрация
    27.01.2015
    Адрес
    Москва
    Сообщений
    12,171

    По умолчанию

    Цитата Сообщение от Игорь Владимирович Посмотреть сообщение
    Через браузер))
    Ок, после всей полученной от вас информации я в рамках вашей задачи не вижу причин сохранять данные в строковом виде.
    Бинарный архив, как вы верно заметили, позволит сэкономить память.
    В чем тогда у вас сейчас вопрос?

  2. #3712

    По умолчанию

    Цитата Сообщение от Евгений Кислов Посмотреть сообщение
    Ок, после всей полученной от вас информации я в рамках вашей задачи не вижу причин сохранять данные в строковом виде.
    Бинарный архив, как вы верно заметили, позволит сэкономить память.
    В чем тогда у вас сейчас вопрос?
    как все сохранять в бинарник, я предпологал ссамого начала что уменя это будет массив байт, все числа и значения буду переводить в байты, а сам массив писать в фаил один за одним, потом также читать нужный, преобразовать обратно согласно структуре данных

  3. #3713

  4. #3714

    По умолчанию

    Цитата Сообщение от Евгений Кислов Посмотреть сообщение
    Функция MemMove из библиотеки CAA Memory позволит "перевести" всё что угодно во всё что угодно.
    если несложно можно подробнее и желательно с примером

    Как понимаю так?
    MEM.MemMove(pSource:=ADR(LW1) , pDestination:= ADR(LW2), uiNumberOfBytes:= 8);
    Последний раз редактировалось Игорь Владимирович; 28.01.2022 в 20:51.

  5. #3715

  6. #3716

    По умолчанию

    работает! спасибо! в принцепи это и искал!

  7. #3717

    По умолчанию

    Цитата Сообщение от Евгений Кислов Посмотреть сообщение
    вот единственно непойму точнее неуверен, допустем имеем адрес 1000, имеем длинну байт 16, те первым я беру адрес 1000 копирую 4 байта, затем 1004 и беру от туда еще 4 байта и так далее? или я что то непонимаю?

  8. #3718

    По умолчанию

    MEM.MemMove(pSource:=ADR(LW1) , pDestination:= ADR(LWArray[0]), uiNumberOfBytes:= 1);
    MEM.MemMove(pSource:=ADR(LW1)+1 , pDestination:= ADR(LWArray[1]), uiNumberOfBytes:= 1);
    MEM.MemMove(pSource:=ADR(LW1)+2 , pDestination:= ADR(LWArray[2]), uiNumberOfBytes:= 1);
    MEM.MemMove(pSource:=ADR(LW1)+3 , pDestination:= ADR(LWArray[3]), uiNumberOfBytes:= 1);
    MEM.MemMove(pSource:=ADR(LW1)+4 , pDestination:= ADR(LWArray[4]), uiNumberOfBytes:= 1);
    MEM.MemMove(pSource:=ADR(LW1)+5 , pDestination:= ADR(LWArray[5]), uiNumberOfBytes:= 1);
    MEM.MemMove(pSource:=ADR(LW1)+6 , pDestination:= ADR(LWArray[6]), uiNumberOfBytes:= 1);
    MEM.MemMove(pSource:=ADR(LW1)+7 , pDestination:= ADR(LWArray[7]), uiNumberOfBytes:= 1);

    MEM.MemMove(pSource:=ADR(LWArray[0]) , pDestination:=ADR(LW2) , uiNumberOfBytes:= 1);
    MEM.MemMove(pSource:=ADR(LWArray[1]) , pDestination:=ADR(LW2)+1 , uiNumberOfBytes:= 1);
    MEM.MemMove(pSource:=ADR(LWArray[2]) , pDestination:=ADR(LW2)+2 , uiNumberOfBytes:= 1);
    MEM.MemMove(pSource:=ADR(LWArray[3]) , pDestination:=ADR(LW2)+3 , uiNumberOfBytes:= 1);
    MEM.MemMove(pSource:=ADR(LWArray[4]) , pDestination:=ADR(LW2)+4 , uiNumberOfBytes:= 1);
    MEM.MemMove(pSource:=ADR(LWArray[5]) , pDestination:=ADR(LW2)+5 , uiNumberOfBytes:= 1);
    MEM.MemMove(pSource:=ADR(LWArray[6]) , pDestination:=ADR(LW2)+6 , uiNumberOfBytes:= 1);
    MEM.MemMove(pSource:=ADR(LWArray[7]) , pDestination:=ADR(LW2)+7 , uiNumberOfBytes:= 1);
    все отлично работает даже в эмуляции!
    Просто изумительно! именно то что я искал! Огромное спасибо! теперь подвежу фор и впуть!

    FOR I1:=0 TO 7 BY 1 DO
    MEM.MemMove(pSource:=ADR(LW1)+I1 , pDestination:= ADR(LWArray[I1]), uiNumberOfBytes:= 1);
    END_FOR

    FOR I2:=0 TO 7 BY 1 DO
    MEM.MemMove(pSource:=ADR(LWArray[I2]) , pDestination:=ADR(LW2)+I2 , uiNumberOfBytes:= 1);
    END_FOR
    Последний раз редактировалось Игорь Владимирович; 28.01.2022 в 21:03.

  9. #3719

    По умолчанию

    один вопрос остался, как я пишу массив в фаил

    sArchEntry := WstWst_TO_VLWst.sVeryLongWStr;

    fbFileWrite(xExecute:=TRUE, hFile:=hFile, pBuffer:=ADR(sArchEntry), szSize:=(StrLenW(ADR(sArchEntry)))*2)
    sArchEntry это переменная для записи в буфер, подставляю сюда свой массив и впуть ?

  10. #3720
    Супер Модератор Аватар для Евгений Кислов
    Регистрация
    27.01.2015
    Адрес
    Москва
    Сообщений
    12,171

    По умолчанию

    Вместо

    FOR I1:=0 TO 7 BY 1 DO
    MEM.MemMove(pSource:=ADR(LW1)+I1 , pDestination:= ADR(LWArray[I1]), uiNumberOfBytes:= 1);
    END_FOR
    можно так (и это будет семантически эквивалентно):

    MEM.MemMove(pSource:=ADR(LW1) , pDestination:= ADR(LWArray[0]), uiNumberOfBytes:= 8);

    sArchEntry это переменная для записи в буфер, подставляю сюда свой массив и впуть ?
    В pBuffer можно передать адрес чего угодно - в т.ч. и вашего массива.

Страница 372 из 711 ПерваяПервая ... 272322362370371372373374382422472 ... ПоследняяПоследняя

Похожие темы

  1. Панели оператора СП3xx. Вопросы и ответы
    от Мурат Ахриев в разделе Панели оператора (HMI)
    Ответов: 3197
    Последнее сообщение: 23.04.2024, 13:45
  2. Панели оператора ИП320. Вопросы и ответы
    от automat в разделе Панели оператора (HMI)
    Ответов: 822
    Последнее сообщение: 20.11.2023, 17:48
  3. ИПП120. Вопросы и ответы
    от Р.Александр в разделе Программируемые реле
    Ответов: 245
    Последнее сообщение: 02.10.2022, 11:34
  4. Индикатор ИП120 , вопросы- ответы
    от rovki в разделе Программируемые реле
    Ответов: 56
    Последнее сообщение: 03.11.2017, 15:58
  5. Панели оператора СП270. Вопросы и ответы
    от Давидюк в разделе Панели оператора (HMI)
    Ответов: 930
    Последнее сообщение: 15.05.2017, 17:12

Ваши права

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