|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
22.01.2014, 10:00 | #31 | |
Пользователь
Регистрация: 20.01.2014
Сообщений: 37
|
Цитата:
|
|
22.01.2014, 10:43 | #32 |
Старожил
Регистрация: 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. |
22.01.2014, 10:45 | #33 |
Старожил
Регистрация: 31.05.2010
Сообщений: 13,543
|
Вы не правильно поняли документацию. Четыре милисекунды, это время реакции той ППЭВМ, которая поставляется в составе проходной. Современные ПЭВМ, способны обработать полученные данные за время, намного меньшее. Не уверен, что база данных Вашего предприятия, составляет миллион человек. А для база в 1000 человек, объём данных будет составлять всего 12 Кбайт. Если применить поиск в сортированном массиве (а он таковым и является) методом дихотомического деления, можно добится скорости отзыва, не превышающий 1 миллисекунду.
raxp, весь холивар на 33 поста из-за того, что человек не правильно понял документацию и уж тем более не адекватно преподнёс, то, как понял. Выложил-бы этот отрывок в самом начале, было бы проще разобраться, чего ему всё таки нужно.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder Последний раз редактировалось Smitt&Wesson; 22.01.2014 в 11:34. |
22.01.2014, 11:23 | #34 |
Старожил
Регистрация: 29.09.2009
Сообщений: 9,713
|
Ему уже намекалось, но в ответ было преподнесено как одолжение нам, тем к кому он обратился за консультацией. Документация несмотря на все выложена так и не была.
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation |
22.01.2014, 11:32 | #35 |
Старожил
Регистрация: 31.05.2010
Сообщений: 13,543
|
Я читал этот пост, но мне всё-же удалось кусочек клещами выдрать .
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder |
22.01.2014, 11:43 | #36 |
Пользователь
Регистрация: 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); } } Последний раз редактировалось TELEPUZ; 22.01.2014 в 11:45. |
22.01.2014, 12:16 | #37 | |
Старожил
Регистрация: 29.09.2009
Сообщений: 9,713
|
Опять кусок из контекста.
TC, по куску дока видно, что работу с "проходной" осуществляет непосредственно микроконтроллер, с которым и производится взаимодействие со стороны верхнего уровня по линиям обмена данными TX/RX, т.е. нормальным образом по последовательному порту. А по поводу дерганья пина, поднимите скорость обмена, если это позволяет МК. Цитата:
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation Последний раз редактировалось raxp; 22.01.2014 в 12:26. |
|
22.01.2014, 13:54 | #38 | |
Пользователь
Регистрация: 20.01.2014
Сообщений: 37
|
Цитата:
|
|
22.01.2014, 14:08 | #39 |
Пользователь
Регистрация: 20.01.2014
Сообщений: 37
|
По поводу поднятия скорости в документации чётко указано, что скорость порта 9600-не ругайте за ещё один кусок. Но всю документацию вам не захочется шерстить. Спасибо, что и так пишете. мне больше не с кем советоваться.
Микроконтроллер на устройстве сопряжения допотопный - ещё с советских времён - однокристальный микроконтроллер DD9(KP1816 BE35). |
22.01.2014, 14:14 | #40 |
Пользователь
Регистрация: 20.01.2014
Сообщений: 37
|
Не чищу порт. Не в этом проблема. Данные в порт всегда приходят без проблем. проблема в том, что похоже пин DTR я выставляю, а контроллер считывает предыдущий сигнал. Иначе я подобную реакцию контроллера не могу объяснить(при первом всовывании пропуска - контроллер реагирует как будто на предыдущий сигнал, все последующие попытки - уже реагирует на новый). Иначе не знаю в чём тут бяка (((
Последний раз редактировалось TELEPUZ; 22.01.2014 в 14:22. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Программирование 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 |