АЦП с интерфейсом RS-232 («Радио», 2005, № 2, c. 26)

В этом форуме обсуждаются статьи напечатанные в журнале "Радио"

АЦП с интерфейсом RS-232 («Радио», 2005, № 2, c. 26)

Сообщение joint931 » 16 окт 2008, 22:51

Кто-нибудь смастерил этот АЦП? Неделю пытаемся завести, программа пишет ошибку и не запускается. Может у кого есть исходный текст этой проги (ftp://ftp.paguo.ru/pub/2005/02/ADC675.zip). Ну или Email автора может кто знает. Очень надо.
Заранее спасибо.
P.S. Может кому-нибудь удастся декомпилировать exe файл? Весит 35кб. Написано все на VB 6.0.
Мой e-mail: joint931@gmail.com
joint931
 
Сообщения: 2
Зарегистрирован: 16 окт 2008, 22:42

Re: АЦП с интерфейсом RS-232 («Радио», 2005, № 2, c. 26)

Сообщение MM16 » 19 окт 2008, 07:57

Хорошо бы немного подробностей: какой компьютер, виндус, что работает одновременно с программой приема данных, какие сообщения об ошибках выдаются.
В статье предложены разные варианты, что на самом деле деле собрано. Непонятно, зачем нужен текст программы.
MM16
 
Сообщения: 20
Зарегистрирован: 23 мар 2008, 08:54

Re: АЦП с интерфейсом RS-232 («Радио», 2005, № 2, c. 26)

Сообщение MM16 » 19 окт 2008, 09:34

Я сейчас заглянул в подшивку за 2005 год. В N2 на странице 28 (чуть ниже рис.4) есть рекомендации по установке програмы GEt3. Вроде бы там все необходимое написано.
Минимальная версия программы и полный инсталлятор есть на сайте журнала РАДИО.
В архиве есть минимальный рабочий комплект в папке Get3_Small и полны инсталлятор программы Get3_Full.zip. Первый занимает мало места и ставится на большинство компьютеров с windowsXP, второй много больше, но содержит полный набор библиотек и должен ставиться на любое windows.
MM16
 
Сообщения: 20
Зарегистрирован: 23 мар 2008, 08:54

Re: АЦП с интерфейсом RS-232 («Радио», 2005, № 2, c. 26)

Сообщение joint931 » 19 окт 2008, 11:53

Усе, девайс собрал, программа запускается. Интересует вот что: как реализована функция преобразования результата в txt формате, где отображаются состояния трех входов? Щас написал свою прогу на delphi. Пока прога показывает буфер com порта. Я так понимаю это то же самое, что и сохранение в bin формате в проге автора Get3. Как разобрать данные приходящие из com порта?
joint931
 
Сообщения: 2
Зарегистрирован: 16 окт 2008, 22:42

Re: АЦП с интерфейсом RS-232 («Радио», 2005, № 2, c. 26)

Сообщение MM16 » 20 окт 2008, 08:07

Данные на COM порт поступают от АЦП непрерывно. Программа приема должна успевать их вынимать из COM порта и обрабатывать быстрее, чем данные поступают. Это не всегда просто, особенно если Windows на долго "задумается". Под 98 и ME эта проблема более заметна, под XP менее.
Для работы с COM портом есть MSComm, который легко вызвать из VisualBasic. С ним можно работать и из Delphi, но там он не родной, могут быть мелкие проблемы. Для Delphi есть в интернете что то похожее, кажется называется BComPort. Наконец, можно работать с портом через вызов функций Windows. Это сложнее, но возможностей больше.
В MSComm есть буфера приема и передачи и средства считывания входных сигналов и задания выходных. Есть возможность задать настройки порта. Благодаря простоте использования именно этот объект использован в программе Get3.exe.
Программа в начале работы принимает несколько байт и ничего с ними не делает. Потов начинает просматривать поступающие байты до тех пор, пока не встретит байт в старшем бите которого 1. Начиная с этого байта все полученное разделяется на группы из трех байта. Из этих байтов извлекаются отсчеты АЦП и дискретный сигнал. Назначение битов в трехбайтовых группах описано в статье.
Пример строки для перевода байтов b1, b2, b3 в текстовую строку, записываемую в файл:

sss$=Str((b1 And 127) + (b2 And 7) * 128) & " " & Str((b2 And 112) \ 16 + (b3 And 127) * 8) & " " & Str((b2 And 8) \ 8)
MM16
 
Сообщения: 20
Зарегистрирован: 23 мар 2008, 08:54

Re: АЦП с интерфейсом RS-232 («Радио», 2005, № 2, c. 26)

Сообщение Пётр » 20 окт 2008, 12:19

Может тогда попробовать использовать DLLку.
http://purik.nextmail.ru/PureBasic/ComPort_Pb.rar
В архиве есть описание функций, сама DLLка и её исходник.
При открытии порта при помощи функции OpenCom можно задавать размер временного буфера приёма и передачи. Информация из порта будет помещатся в этот буфер и уже можно неспеша потом читать данные с помощью своей программы и быть увереным в том, что ни один байт не пропущен. Думаю размер 1024 байт будет более чем достаточным.
Размер буфера приёма в байтах задаётся при помощи аргумента BufferIn, размер буфера передачи зависит от аргумента BufferOut.
Подробнее об этом можно прочитать в файле ComPort_Pb.rtf из архива.
Пётр
 
Сообщения: 46
Зарегистрирован: 21 мар 2008, 13:03

Re: АЦП с интерфейсом RS-232 («Радио», 2005, № 2, c. 26)

Сообщение MM16 » 21 окт 2008, 08:13

COM порт получает от АЦП примерно 10000 байт в секунду. Буфер из 1024 байт переполнится через 0,1 секунды. Это очень маленький запас. Есть болшая вероятность потери части отсчетов АЦП. Советую увеличить размер буфера в 10, а еще лучше в 30 раз.
MM16
 
Сообщения: 20
Зарегистрирован: 23 мар 2008, 08:54


Вернуться в Журнал "РАДИО"

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

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