Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.01.2014, 10:00   #31
TELEPUZ
Пользователь
 
Регистрация: 20.01.2014
Сообщений: 37
По умолчанию

Цитата:
Сообщение от Smitt&Wesson Посмотреть сообщение
А то и скажу. Вы неправильно понимаете работу COM-порта. 100 бит, он принимает в синхронном режиме и Ваша программа к этому не имеет никакого отношения. Это делается на аппаратном уровне. Эти 12 бат, запишуться в буфер, который задан при инициализации. Потом, этот буфер, можете обрабатывать хоть пол-часа. Если это проходная, то задержка обработки в несколько миллисекунд совершенно не существенна. Человек, даже моргнуть за это время не успеет, а не то, что там с карточкой что-то сотворить. В общем, читайте инструкцию к терминалу и не занимайтесь ерундой.
В данном случае говорю о времени работы системы в целом! И скорость записи данных в порт ограничивает скорость обмена информацией всей системы и от этого никуда не деться! Я согласен, что для меня критично время обработки данных, начиная с того момента, как они уже придут в порт. А вот тут Вы не правы, что для проходной не критично время на обработку информации и на ответ. Вот кусочек из документации подтверждает мои слова:
Изображения
Тип файла: jpg specif.JPG (48.8 Кб, 109 просмотров)
TELEPUZ вне форума Ответить с цитированием
Старый 22.01.2014, 10:43   #32
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

...работал с конкретными системами СКУД и считывателями perco-05. Всегда времени хватало, потому как обмен не в виде тупого дерганья DTR c верхнего уровня, а в виде работы с контроллером сбора данных (ПЛК) и кучи датчиков к нему по токовой петле или RS-485. И это идеологически верный подход потому, как позволяет работать совершенно автономно. Верхний уровень - он для отчетности.

Когда вы, TC, пишите про "проходную" указывайте точную модель оборудования, потому как большинство ваших высказываний "про проходную" притянуто за уши и касается частного случая.
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation

Последний раз редактировалось raxp; 22.01.2014 в 11:26.
raxp вне форума Ответить с цитированием
Старый 22.01.2014, 10:45   #33
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Вы не правильно поняли документацию. Четыре милисекунды, это время реакции той ППЭВМ, которая поставляется в составе проходной. Современные ПЭВМ, способны обработать полученные данные за время, намного меньшее. Не уверен, что база данных Вашего предприятия, составляет миллион человек. А для база в 1000 человек, объём данных будет составлять всего 12 Кбайт. Если применить поиск в сортированном массиве (а он таковым и является) методом дихотомического деления, можно добится скорости отзыва, не превышающий 1 миллисекунду.
Цитата:
Сообщение от raxp Посмотреть сообщение
Когда вы, TC, пишите про "проходную" указывайте точную модель оборудования, потому как большинство ваших высказываний "про проходную" притянуто за уши и касается частного случая.
raxp, весь холивар на 33 поста из-за того, что человек не правильно понял документацию и уж тем более не адекватно преподнёс, то, как понял. Выложил-бы этот отрывок в самом начале, было бы проще разобраться, чего ему всё таки нужно.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder

Последний раз редактировалось Smitt&Wesson; 22.01.2014 в 11:34.
Smitt&Wesson вне форума Ответить с цитированием
Старый 22.01.2014, 11:23   #34
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

Ему уже намекалось, но в ответ было преподнесено как одолжение нам, тем к кому он обратился за консультацией. Документация несмотря на все выложена так и не была.
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 22.01.2014, 11:32   #35
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Я читал этот пост, но мне всё-же удалось кусочек клещами выдрать .
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Старый 22.01.2014, 11:43   #36
TELEPUZ
Пользователь
 
Регистрация: 20.01.2014
Сообщений: 37
По умолчанию

Ваша точка зрения ясна. Но я не выложил всё описание работы проходной, поэтому вы, возможно, делаете не правильные выводы. Вот ещё ниже прикрепляю предыдущий кусочек из документации. Возможно я не так понял принцип работы системы, но вот пишу следующий код, данные в обработчике приема с порта пакета считываются - но меняю сигнал на линии DTR- и такое ощущение, что контроллер считывает предыдущее состояние линии.

Код C# тестовой прожки:

//Обработчик загрузки формочки

private void Form1_Load(object sender, EventArgs e)
{
try
{
//Настраиваем serial-port
serialPort_Prohodnaya.PortName = "COM1";
serialPort_Prohodnaya.DataBits = 8;
serialPort_Prohodnaya.Parity = Parity.Even;
serialPort_Prohodnaya.StopBits = StopBits.Two;
serialPort_Prohodnaya.BaudRate = 9600;
//подписываемся обработку события на приход данных в порт с проходной
serialPort_Prohodnaya.DataReceived += new SerialDataReceivedEventHandler(seri alPort_Prohodnaya_DataReceived);
//Подписываемся на обработчик возникновения ошибок приёма данных на всякий случай
serialPort_Prohodnaya.ErrorReceived += new SerialErrorReceivedEventHandler(ser ialPort_Prohodnaya_ErrorReceived);
//открываем порт
serialPort_Prohodnaya.Open();
//изначально устанавливаем DTR в 1-запрет прохода
serialPort_Prohodnaya.DtrEnable = true;

}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
//Обработчик ошибок при приёме
void serialPort_Prohodnaya_ErrorReceived (object sender, SerialErrorReceivedEventArgs e)
{
MessageBox.Show(e.EventType.ToStrin g());
}

void serialPort_Prohodnaya_DataReceived( object sender, SerialDataReceivedEventArgs e)
{
try
{
//Читаем данные по 12 байт
byte[] data = new byte[12];
serialPort_Prohodnaya.Read(data, 0, data.Length);
serialPort_Prohodnaya.DtrEnable = false;//разрешаем проход
//по идее после первой попытки всовывания пропуска DTR должен установиться в
// 0 - т.е. контроллер должен разрешить проход , но этого не происходит,
// разрешения проходит только после второй и всех последующих попыток
// всовывания пропуска, т.е. линия за 4 мс не успела поменять своё состояние с
// момента прихода данных на порт с устройства сопряжения.

//Обновляем контролы
//Т.к. обработчик прихода данных находится в другом потоке(не том, который
//отвечает за работу с контролами) -то через BeginInvoke
listBox1.BeginInvoke(new UpdateDelegate(List1InvokeMethod));

}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}

}
Изображения
Тип файла: jpg spec1.JPG (85.5 Кб, 115 просмотров)
Тип файла: jpg spec2.JPG (102.9 Кб, 20 просмотров)

Последний раз редактировалось TELEPUZ; 22.01.2014 в 11:45.
TELEPUZ вне форума Ответить с цитированием
Старый 22.01.2014, 12:16   #37
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

Опять кусок из контекста.

TC, по куску дока видно, что работу с "проходной" осуществляет непосредственно микроконтроллер, с которым и производится взаимодействие со стороны верхнего уровня по линиям обмена данными TX/RX, т.е. нормальным образом по последовательному порту.

А по поводу дерганья пина, поднимите скорость обмена, если это позволяет МК.

Цитата:
// 0 - т.е. контроллер должен разрешить проход , но этого не происходит,
// разрешения проходит только после второй и всех последующих попыток
// всовывания пропуска, т.е. линия за 4 мс не успела поменять своё состояние с
// момента прихода данных на порт с устройства сопряжения.
а чистите ли вы порт после посылки данных?
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation

Последний раз редактировалось raxp; 22.01.2014 в 12:26.
raxp вне форума Ответить с цитированием
Старый 22.01.2014, 13:54   #38
TELEPUZ
Пользователь
 
Регистрация: 20.01.2014
Сообщений: 37
По умолчанию

Цитата:
Сообщение от raxp Посмотреть сообщение
Опять кусок из контекста.

TC, по куску дока видно, что работу с "проходной" осуществляет непосредственно микроконтроллер, с которым и производится взаимодействие со стороны верхнего уровня по линиям обмена данными TX/RX, т.е. нормальным образом по последовательному порту.

А по поводу дерганья пина, поднимите скорость обмена, если это позволяет МК.

а чистите ли вы порт после посылки данных?
Дабы не было недоразумений опишу, какие линии у меня вообще задействованы на порту. DTR, RTS, DSR, RXD, GND. Т.е. никаких данных в порт я не посылаю. мне я так понимаю, достаточно установить 1 на линию DTR для запрета прохода, 0-на разрешение. Данные я только читаю по линии RXD.
TELEPUZ вне форума Ответить с цитированием
Старый 22.01.2014, 14:08   #39
TELEPUZ
Пользователь
 
Регистрация: 20.01.2014
Сообщений: 37
По умолчанию

По поводу поднятия скорости в документации чётко указано, что скорость порта 9600-не ругайте за ещё один кусок. Но всю документацию вам не захочется шерстить. Спасибо, что и так пишете. мне больше не с кем советоваться.
Микроконтроллер на устройстве сопряжения допотопный - ещё с советских времён - однокристальный микроконтроллер DD9(KP1816 BE35).
Изображения
Тип файла: jpg 33.jpg (90.2 Кб, 113 просмотров)
TELEPUZ вне форума Ответить с цитированием
Старый 22.01.2014, 14:14   #40
TELEPUZ
Пользователь
 
Регистрация: 20.01.2014
Сообщений: 37
По умолчанию

Не чищу порт. Не в этом проблема. Данные в порт всегда приходят без проблем. проблема в том, что похоже пин DTR я выставляю, а контроллер считывает предыдущий сигнал. Иначе я подобную реакцию контроллера не могу объяснить(при первом всовывании пропуска - контроллер реагирует как будто на предыдущий сигнал, все последующие попытки - уже реагирует на новый). Иначе не знаю в чём тут бяка (((

Последний раз редактировалось TELEPUZ; 22.01.2014 в 14:22.
TELEPUZ вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программирование LPT-порта на DELPHI Vova777 Компьютерное железо 5 05.02.2011 19:27
Программирование LPT-порта на DELPHI Vova777 Общие вопросы Delphi 0 31.01.2011 17:37
Программирование последовательного порта Funker Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 7 27.05.2010 02:20
программирование lpt порта alexs2141 Общие вопросы Delphi 5 07.06.2008 17:10