Название: Программирование COM - порта Отправлено: vania-pooh от 09 Август 2006, 21:10 Значит задача такая: есть устройство, подсоединенное через ком1 порт (используется 4 жилы - RXD, TXD, GND и кажись DTR, номера жил - 1,2,3,4). Необходимо каким-то образом считать из внутренней памяти устройства данные. Мой вариант (на Pascal):
... assign(f,COM1); //f - файловая переменная, присваиваем reset(f); //читаем read(f,var1,var2,...,varn);//считываем в переменные ... Т.е. мы открываем порт для доступа через стандартный псевдоним и читаем данные. Я так не пробовал никогда, но кажется должно работать. Кто имел дело с подобными вещами, напишите что вы об этом думаете и как можно реализовать подобную тему. Пока считайте, что данные - некодированные, а просто лежат последовательно в ячейках памяти. Код программы желательно писать на паскале или объектном паскале, но можно и на "с". Заранее спасибо. Название: Re:Программирование COM - порта Отправлено: frost_ii от 09 Август 2006, 22:57 Я так полагаю, что сначала на устройство нужно послать команду, чтобы оно эти данные в порт бросило...
э-э-э... как оно там? var command : string; begin command = "GET"; assign(f,COM1); rewrite(f); write(f,command); close(f); reset(f) ..... Название: Re:Программирование COM - порта Отправлено: PeaK от 10 Август 2006, 10:16 Вообще нужно бы задавать параметры порта. :) В свое время для работы с ком портом на Делфи я потратил кучу времени для создания отдельного модуля.
Програмка создается на каком именно компиляторе? Название: Re:Программирование COM - порта Отправлено: vania-pooh от 10 Август 2006, 10:24 пусть для удобства всех это будет delphi 6. соотв. там меняется close на closefile.
Название: Re:Программирование COM - порта Отправлено: PeaK от 10 Август 2006, 10:34 Написано более чем на 50% не мной, но почти все процедуры доводились мною. Использую постоянно.
Создаем объект и наслаждаемся. Использую Д7, но ничего привязанного именно к семерке нет. Название: Re:Программирование COM - порта Отправлено: vania-pooh от 10 Август 2006, 20:11 а кстати куда этот модуль класть чтобы просто подключать?
Название: Re:Программирование COM - порта Отправлено: PeaK от 11 Август 2006, 09:03 Модуль кладется в каталог с проектом.
В том модуле, который будет работать с портом, вверху, после uses, через запятую, добавляем ComPort. Если все правильно, то проект должен компилироваться и при зажатом контроле на клавиатуре кликом мышки по строчке ComPort проваливаться в файл ComPort.pas. После чего, объявляем глобальную переменную типа Код: var Иннициализируется порт примерно так Код: ComPort := TRS232.Create(AOwner) ; Соответственно при окончании работы память неплохо бы освободить. Название: Re:Программирование COM - порта Отправлено: vania-pooh от 11 Август 2006, 09:50 а ну с самим то модулем я уже разберусь. а в готовую программу он сам вкомпилирует этот модуль или придется класть пас-файл и в дистрибутив?
Название: Re:Программирование COM - порта Отправлено: PeaK от 11 Август 2006, 10:54 Нет. Все будет откомпилировано и включено.
Название: Re:Программирование COM - порта Отправлено: vania-pooh от 11 Август 2006, 11:46 насчет того, что я разберусь, я видимо ошибся. че дальше то делать можно, чтобы с устройства хоть один байт получить или строку? а то я просто если readstring применяю, то он читает пустую строку.
Название: Re:Программирование COM - порта Отправлено: PeaK от 11 Август 2006, 13:55 Читай побайтно в цикле While, до прочтения первого байта. (функция вернет true) Плюс ищи что-то типа Advanced Serial Port Monitor - что бы убедиться, что передача идет.
Название: Re:Программирование COM - порта Отправлено: vania-pooh от 14 Август 2006, 10:39 а где вообще искать?
Название: Re:Программирование COM - порта Отправлено: PeaK от 15 Август 2006, 08:45 а где вообще искать? В интернете. Дело в том, что мой я потер, сейчас задачи другие, поэтому не пользуюсь, но снифер на последовательный порт - вещь в таком программировании нужная.Название: Re:Программирование COM - порта Отправлено: swein от 15 Август 2006, 23:03 если это учебная таска - то мог бы удосужится написать в яндексе чтото типа "программирование rs-232 на pascal"
если пишешь для себя - взял бы яву http://www.java2s.com/Code/Java/Development-Class/COM-Port.htm Название: Re:Программирование COM - порта Отправлено: PeaK от 17 Август 2006, 08:52 Если не получается - отпишись. Соберу простенькую тестилку. :)
Название: Re:Программирование COM - порта Отправлено: vania-pooh от 18 Август 2006, 09:04 да уж собери-ка (лучше с исходным кодом). я не понимаю сам метод доступа к порту. вот мы его открыли, потом записали в него команду, а дальше что? подключенное устройство записывает в него же ответ на команду? и являются ли эти команды стандартными для большинства устройств или для каждого они свои?
Название: Re:Программирование COM - порта Отправлено: PeaK от 18 Август 2006, 09:40 Какое устройство программируем? :)
Например купюроприемник обменивается пакетами примерно так #байт - признак начала пакета #байт - адрес #байт - длина пакета #команда (или отклик, может быть довольно длинным) #CRC-16 - рассчитывается по отдельному алгоритму. Обмен идет непрерывно - пакет отправили, отклик забрали, пакет отправили, отклик забрали. Или, допустим сканер штрих-кода - молчит и программирования не требует. Сидим и слушаем - как только код считан идет пакет # префикс # код (строка) # постфикс. Название: Re:Программирование COM - порта Отправлено: vania-pooh от 21 Август 2006, 09:07 устройство называется электронный счетчик импульсов и основная его суть - хранить в памяти инфу о кол-ве сосчитанных импульсов и выгружать их на комп в нужное время.
Название: Re:Программирование COM - порта Отправлено: PeaK от 22 Август 2006, 14:24 устройство называется электронный счетчик импульсов и основная его суть - хранить в памяти инфу о кол-ве сосчитанных импульсов и выгружать их на комп в нужное время. Просто выкидывает, или нужно послать что-то, что бы ответ получить? Формат пакета данных какой?Название: Re:Программирование COM - порта Отправлено: vania-pooh от 23 Август 2006, 09:41 а вот это - хз. могу посмотреть через ту прогу, кот. ты говорил.
Название: Re:Программирование COM - порта Отправлено: PeaK от 23 Август 2006, 10:10 Этот счетчик самодельный или у него есть фирма-производитель и модель?
Название: Re:Программирование COM - порта Отправлено: vania-pooh от 23 Август 2006, 14:42 zenner izm 972 (немецкий)
Название: Re:Программирование COM - порта Отправлено: PeaK от 24 Август 2006, 09:11 У меня проблемы с поиском руководств в интернете. Есть хоть какое-то описание на любом языке?
Название: Re:Программирование COM - порта Отправлено: vania-pooh от 24 Август 2006, 10:38 оно в pdf: http://www.zenner.de/shared/files/doku/englisch/performance_specification_izm972_englisch.pdf
|