Часовой пояс: UTC + 3 часа




Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 2317 • Страница 94 из 116<  1 ... 91  92  93  94  95  96  97 ... 116  >
  Пред. тема | След. тема 
В случае проблем с отображением форума, отключите блокировщик рекламы
Автор Сообщение
 

Member
Статус: Не в сети
Регистрация: 16.04.2006
Откуда: d3d9.dll
Фото: 7
}{acker писал(а):
пределы температур датчика от -55 до +125

Это я просто в файле DS18B20_.doc прочёл
Цитата:
• Измеряет температуру от -55°C до +100°C (от -67°F до +212°F)

Потому и написал 100 °C.
}{acker писал(а):
Сброс присутствие работает датчик обнаруживает.

Если выдаёт сообщение "Датчик на связи!", значит достучаться до датчика удалось (такое сообщение программа выдаёт только в том случае, если после посылки датчику байта F0h тот отвечает не равным F0h байтом. Хоть это то радует. :)
}{acker писал(а):
но при чтении температуры постоянно выводит -86

Мда, холодновато. :) Если выдаёт -86, значит датчик передаёт обратно (или вообще на неё не реагирует) код той команды, которую он получил с СОМ-порта ПК (код команды "Чтение температуры" равный AAh и есть -86 в дополнительном коде).
Попробую переделать и реализовать команды Read ROM и Match ROM. Сегодня-завтра выложу. Только непонятно как по полученному 8-битному значению CRC проверить правильность принятой информации (сам алгоритм не ясен).
P. S. А команд с кодами EEh, AAh, 22h датчик не поддерживает?



Партнер
 

Member
Статус: Не в сети
Регистрация: 01.07.2006
Откуда: Челябинск
Вот и я дальше сброса не уходил.
А ты скорость менял после сброса все остальные команды делаются на скорости 115200.


 

Member
Статус: Не в сети
Регистрация: 16.04.2006
Откуда: d3d9.dll
Фото: 7
}{acker писал(а):
А ты скорость менял после сброса все остальные команды делаются на скорости 115200.

Да, конечно. Если скорости приемника и передатчика будут разными, то байты будут неслабо искажаться (я помню даже такой "эксперимент" ставил). Сейчас в программе немного переделал со скоростями (чтобы уж точно не ошибиться с правильным выставлением скорости передачи).
Shader 3.0 писал(а):
Попробую переделать и реализовать команды Read ROM и Match ROM.

В общем с Match ROM не совсем понял (какой именно 64-битный адрес мастер должен отправить, или это паспортные данные датчика?), а вот Read ROM попробовал реализовать.
Исходник тут http://cp.people.overclockers.ru/cgi-bi ... _v.0.2.rar
Сначала нажми кнопку "Команда сброс/присутствие". Потом "Read ROM" и подожди пока в едитах "Код микросхемы", "Серийный номер" и "CRC" высвятяться полученные данные (хотя если будет работать, то думаю это произойдёт мгновенно). Потом жми "Запуск преобразования" и "Чтение температуры" (только всё в такой последовательности). О результатах тогда отпишись. Если в едите "Код микросхемы" будет что-то отличное от 10h, то я сдаюсь (больше ничего предложить не могу).


 

Member
Статус: Не в сети
Регистрация: 13.02.2004
Откуда: Чехия
Доброго дня всем. Подскажите, из за чего может возникать ошибка EInOutError I/O error 6.
при вкюченной директиве компилятора {$I+}. При {$I-} программа виснет.

_________________
Лучше иметь пузо от пива, чем горб от работы.


 

Member
Статус: Не в сети
Регистрация: 16.04.2006
Откуда: d3d9.dll
Фото: 7
George J
DRKB 3.0 по этому вопросу вот чего говорит
Цитата:
Если действует директива {$I+}, то при возвращении процедурой ввода-вывода ненулевого значения генерируется исключение EInOutError и в его свойство errorcode заносится код ошибки. Таким образом, при действующей директиве {$I+} операции ввода-вывода располагаются в блоке try...except, имеющем обработчик исключения EInOutError. Если такого блока нет, то обработка производится методом TApplication.HandleException.


 

Member
Статус: Не в сети
Регистрация: 13.02.2004
Откуда: Чехия
что-то подобное я нашел в Интернете. Мне бы узнать что это за ошибка N6.
Типа что конкретно происходит (нет доступа или нет файла)...
Добавлено спустя 3 минуты, 1 секунду
Интересно то что если програму запускать через ярлык то она работает. А если запускать из другой програмы (есть менюшка в которой один из пунктов моя прога) то вываливается с этой ошибкой (надеюсь понятно написал)

_________________
Лучше иметь пузо от пива, чем горб от работы.


 

Member
Статус: Не в сети
Регистрация: 16.04.2006
Откуда: d3d9.dll
Фото: 7
George J писал(а):
Типа что конкретно происходит (нет доступа или нет файла)...

Когда нет файла помоему выдаёт I/O error 104. Наверно тут что-то другое...


 

Member
Статус: Не в сети
Регистрация: 13.02.2004
Откуда: Чехия
Shader 3.0 Спасибо за попытку помочь. Уже второй день не могу найти решение.
Кстати ошибка появилась после помещения на форму объекта DirectoryOutline1.
Может в этом дело? Еще непонятно почему из среды Делфи програма работает.

_________________
Лучше иметь пузо от пива, чем горб от работы.


 

Member
Статус: Не в сети
Регистрация: 01.07.2006
Откуда: Челябинск
Shader 3.0 Не правда купи се датчик а то так без датчика у тя неполучится сделать программу
Shader 3.0 писал(а):
В общем с Match ROM не совсем понял (какой именно 64-битный адрес мастер должен отправить, или это паспортные данные датчика?)

64 битный адрес это - 8-битный код семейства (10h), затем 48-битный серийный номер, а затем 8-битный CRC
Чтоб узнать 64-битный адрес нужно использовать команду Read ROM [33h] но эт возможно тока с одним датчиком на шине. Если на шине много датчиков то надо использовать команду Search ROM [F0h], с помощью этой команды можно определить все номера датчиков.

И в программе чтобы обращатся к датчику нада выполнить команды
1. Сброс присутствие
2. Match ROM [55h] и передать 64 битный адрес датчика или если один датчик то выполнить команду Skip ROM [CCh]

Так вот у меня висит один датчик ты команду Skip ROM [CCh] делал?


 

Member
Статус: Не в сети
Регистрация: 16.04.2006
Откуда: d3d9.dll
Фото: 7
}{acker писал(а):
Не правда купи се датчик а то так без датчика у тя неполучится сделать программу

Пока не имею такой возможности. К тому же дома паять нечем (да и не мастер я в пайке схем).

}{acker писал(а):
Чтоб узнать 64-битный адрес нужно использовать команду Read ROM [33h] но эт возможно тока с одним датчиком на шине.

}{acker писал(а):
Так вот у меня висит один датчик

Ну так Read ROM работает или нет? В полях "Код микросхемы", "Серийный номер" и "CRC" появляются данные?
}{acker писал(а):
ты команду Skip ROM [CCh] делал?

Сейчас дополнил. Skip ROM теперь есть. Больше ничего не менял. Можешь проверить http://cp.people.overclockers.ru/cgi-bi ... _v.0.3.rar
Главное напиши, работает ли Read ROM.


 

Member
Статус: Не в сети
Регистрация: 16.08.2006
Откуда: Пермь
}{acker
Датчик подключен по схеме из датащита или как тут?

Тоже купил такой девайс. Вот думаю качнуть TempKeeper, если будет работать, то каким-нибудь портмонитором подсмотреть как он с датчиком общается.


 

Member
Статус: Не в сети
Регистрация: 05.01.2003
Откуда: Москва
Фото: 2
to all
Есть проблема. Нужно написать программу, которая могла бы писать с USB-камеры видео (с этим разобрался, AVI capture из пакета JediVCL) и траслировать это клиентам по сети (по IP). То есть сервер всего этого дела практически написан, ну кроме посылки по сети пакетов с видео. Ну и так же клиенты вообще не написаны, которые могли бы это как-либо показывать.

_________________
Устав традиций нужно соблюдать, Хоть и не раз ответят вам отказом: Конечно, баба может и не дать, Но предложить ты ей всегда обязан!


 

Member
Статус: Не в сети
Регистрация: 01.07.2006
Откуда: Челябинск
Shader 3.0
Read ROM неработает вобще в поля ничего не выводится. Температуру постоянно -0,5 кажет.


 

Member
Статус: Не в сети
Регистрация: 16.08.2006
Откуда: Пермь
2 }{acker & Shader 3.0
Есть подозрение, что то что вы делаете, это не совсем то :) Как я понял, из тучи исходников на Си, байты надо передавать побитно. Тоесть, датчик всегда работает на скорости 9600, но для реализации так называемых time slot'ов, надо переключаться на 115200, а на такой скорости, время приёма/передачи одно байта, равно(или примерно равно) времени приёма/передачи одно бита на 9600. Передаваемый байт надо разложить на биты и 1 передавать как FFh, а 0 как 00h, принимать байт тоже побитно, потом складывать. И ещё, после комманды Convert T[44h] надо ждать 750мс(для 12bit) и только потом читать TL и TH. Если используется паразитное питания, то во время выполнения Convert T надо слать FFы для питания датчика, иначе он просто отрубится и ничего не выдаст.


 

Member
Статус: Не в сети
Регистрация: 01.07.2006
Откуда: Челябинск
poo-shock
Кстати похоже на то, потому что в описании команды чтения/записи выглядят так

Чтение отправляемая команда FFh если возвращается FFh то лог. 1, если 00h то лог 0

А на счет паразитного питания даже не думал надо будит попробовать FF отсылать или подключить третий провод.


 

Member
Статус: Не в сети
Регистрация: 16.04.2006
Откуда: d3d9.dll
Фото: 7
poo-shock писал(а):
Передаваемый байт надо разложить на биты и 1 передавать как FFh, а 0 как 00h, принимать байт тоже побитно, потом складывать.

Ну теперь всё понятно. Только непонятно каким битом вперёд нужно отправлять данные? Старшим или младшим? Т. е., если отправляем команду Skip ROM (CCh=11001100b), то формировать байт для отправки в буфер драйвера СОМ-порта нужно так:
Код:
OutBuffer[0]:=$FF;
OutBuffer[1]:=$FF;
OutBuffer[2]:=$00;
OutBuffer[3]:=$00;
OutBuffer[4]:=$FF;
OutBuffer[5]:=$FF;
OutBuffer[6]:=$00;
OutBuffer[7]:=$00;

или так:
Код:
OutBuffer[0]:=$00;
OutBuffer[1]:=$00;
OutBuffer[2]:=$FF;
OutBuffer[3]:=$FF;
OutBuffer[4]:=$00;
OutBuffer[5]:=$00;
OutBuffer[6]:=$FF;
OutBuffer[7]:=$FF;

Какие соображения?
З. Ы. То же касается чтения: первый принятый бит (т.е. на самом деле - байт FFh или 00h) - есть младший или старший бит принимаемого байта?


 

Member
Статус: Не в сети
Регистрация: 16.08.2006
Откуда: Пермь
Shader 3.0 писал(а):
непонятно каким битом вперёд нужно отправлять данные? Старшим или младшим?
вот это я пока не понял, даташит по этому поводу молчит. На Си функция записи и чтения байта выглядит так:
Код:
    //caveat: we return first bit received in 1<<0, second in 1<<1..
    //no matter how many bits are asked for.
    int TouchBits(unsigned char outch, int bits = 8)
    {
        //we write a *byte* so the device can see a *bit*
        unsigned char mask = 01;
        unsigned char inv = 0;
        for (int i = 0; i < bits; ++i)
        {
            unsigned char bytev = (outch & mask) ? 0xff : 0x00;
            if (write((char*)&bytev, 1) != 1)
                return -1;
            if (read((char*)&bytev, 1) != 1)
                return -2;
            inv |= (bytev & 0x01) ? mask : 0;
            mask <<= 1;
        }
        return inv;
    }

тут есть цикл, в нём запись и чтение выполняются за один проход, так же видно какие-то манипуляции с байтами и масками, вот это мне не совсем понятно, вернее совсем не понятно :roll: операторы "?" и ":" первый раз вижу


 

Member
Статус: Не в сети
Регистрация: 16.04.2006
Откуда: d3d9.dll
Фото: 7
poo-shock
Я синтаксис Си вообще не знаю, так что тут тоже ничего сказать не могу.
Но всё-таки где-то я уже встречал передачу пакетов данных и насколько помню обычно всегда передают вперёд именно младшим байтом/битом. Вот взял и заново переписал программу. }{acker, проверь, может теперь заработает
http://cp.people.overclockers.ru/cgi-bi ... _v.0.4.rar
Только вот Read ROM может работать не совсем корректно (всё из-за той же путанницы со старшим/младшим битом). Ну это, если что, несложно будет исправить (если точно известно, что код у микросхемы = 10h).
To All
Народ, вознит простенький вопрос: как сделать так, чтобы форму можно было таскать мышкой не только за заголовок, но и за какой-нибудь компонент, расположенный на форме (например Image)? Раньше помнил, но теперь что-то подзабыл. Какие там свойства формы и компонента надо для этого изменить?


 

Member
Статус: Не в сети
Регистрация: 03.01.2004
Откуда: Питер
poo-shock писал(а):
операторы "?" и ":" первый раз вижу

это не операторы, это одна логическая операция.
Конструкция "y = a ? b : c" будет означать, что если "a" верно (true), то "y" примет значение "b", иначе "y" примет значение "c".
Правда эта тема уже далека от программирования на Delphi...


Shader 3.0
посмотри тут

_________________
Здесь так мало тех, с кем легко говорить,
Еще меньше тех, с кем не страшно молчать (c)


 

Member
Статус: Не в сети
Регистрация: 01.07.2006
Откуда: Челябинск
Shader 3.0
Проще на событие движения мыши проверять нажата ли кнопка на каком то из компонентов или на форме - в общем за чо двигать можно и прибавлять или отнимать от координат положения формы то количество на сколько изменились координаты позицыы курсора


Показать сообщения за:  Поле сортировки  
Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 2317 • Страница 94 из 116<  1 ... 91  92  93  94  95  96  97 ... 116  >
-

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2


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

Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB | Kolobok smiles © Aiwan