Современные технологии автоматизации» («СТА») —  журнал для квалифицированных специалистов по промышленной автоматизации Форум СТА — современные технологии автоматизации Домашняя страница
Домашняя страница форума CTA Домашняя страница форума CTA > II. АСУТП и SCADA > Архив
  Активные темы Активные темы
  FAQ FAQ  Искать в форуме   Зарегистрироваться Зарегистрироваться  Вход в систему Вход в систему

RTU188: работа с файлами

 Ответить Ответить
Автор
Сообщение
_Vladimir_ Смотреть выпадающим
Новичок
Новичок


Присоединился: 01 Июнь 2004
Категория: Russian Federation
Online Status: Offline
Публикации: 1
Свойства публикации Свойства публикации   Ответить, цитируя автора - _Vladimir_ Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Тема сообщения: RTU188: работа с файлами
    Опубликовано: 01 Июнь 2004 14:04
Заметил, что в программе работа с файлами на флэш-диске происходит нормально до тех пор, пока я не инициализирую COM порт и не устанавливаю свой обработчик прерывания. После установки начинаются глюки: пропадают записанные данные, обрезается файл и т.п. Для разработки проги использую Borland C++ 3.1. Для работы с файлами пробовал fopen/fread/fwrite и _open/_read/_write. Кто-нибудь наступал на такие грабли? Любая помощь приветствуется.
Наверх
alex_i Смотреть выпадающим
Новичок
Новичок


Присоединился: 22 Июнь 2004
Online Status: Offline
Публикации: 5
Свойства публикации Свойства публикации   Ответить, цитируя автора - alex_i Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 22 Июнь 2004 14:17

Было однажды такое (я использовал системную флеш), но проблема решилась обновлением BIOS

Работа c DiscOnChip намного быстрее и интереснее

Наверх
Bobby Смотреть выпадающим
Новичок
Новичок


Присоединился: 12 Июль 2004
Категория: Russian Federation
Online Status: Offline
Публикации: 2
Свойства публикации Свойства публикации   Ответить, цитируя автора - Bobby Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 12 Июль 2004 14:16

В обработчике аппаратного прерывания Com1 должен стоять фильтр программных прерываний

 if(!(inpw(0xff2c) & 0x400))  // Программное прерывание 
 {
     _chain_intr((void interrupt(*)(...)) oldcom1);
     return;
 }

Наверх
nick2076 Смотреть выпадающим
Новичок
Новичок


Присоединился: 02 Август 2004
Категория: Russian Federation
Online Status: Offline
Публикации: 12
Свойства публикации Свойства публикации   Ответить, цитируя автора - nick2076 Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 05 Август 2004 13:21

Дело в том, что у этого контроллера есть очень нехорошая вещь. У него номер вектора прерывания для com1 (14h) совпадает с сервисом программного прерывания его биоса, который имеет номер 14h. Таким образом, когда Вы назначаете своё прерывания на com1, Вы фактически теряете возможность использовать функции, связанные с этим программным прерыванием. Поэтому мне приходилось в некоторых случаях работать напрямую с регистрами контроллера, иначе никак

 

С уважением, Николай
Наверх
 Ответить Ответить

Переход на форум Права доступа на форуме Смотреть выпадающим

Bulletin Board Software by Web Wiz Forums® version 9.64
Powered by Web Wiz Forums Free Express Edition
Copyright ©2001-2009 Web Wiz