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

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

  1. #3711

    По умолчанию

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

  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

    По умолчанию

    Вместо

    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 из 893 ПерваяПервая ... 272322362370371372373374382422472872 ... ПоследняяПоследняя

Похожие темы

  1. Панели оператора СП3xx. Вопросы и ответы
    от Мурат Ахриев в разделе СП3хх, СП270
    Ответов: 4209
    Последнее сообщение: 26.08.2026, 16:07
  2. Ответов: 863
    Последнее сообщение: 02.03.2026, 17:13
  3. ИПП120. Вопросы и ответы
    от Р.Александр в разделе Программируемые реле
    Ответов: 273
    Последнее сообщение: 08.09.2025, 13:21
  4. Индикатор ИП120 , вопросы- ответы
    от rovki в разделе Программируемые реле
    Ответов: 56
    Последнее сообщение: 03.11.2017, 15:58
  5. Панели оператора СП270. Вопросы и ответы
    от Давидюк в разделе СП3хх, СП270
    Ответов: 930
    Последнее сообщение: 15.05.2017, 17:12

Ваши права

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