![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#51 | |||
Старожил
Регистрация: 29.09.2009
Сообщений: 9,713
|
![]() Цитата:
Цитата:
Цитата:
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation |
|||
![]() |
![]() |
![]() |
#52 | ||
Старожил
Регистрация: 31.05.2010
Сообщений: 13,543
|
![]()
Так вот и я про то-же. Контроллер настроен на обмен в асинхронном режиме, а значит реагирует на стартовый и стоповый биты. По схеме понять не возможно, куда девается первый полученный байт, поэтому и предположил, что контроллер его просто не принимает.
Цитата:
Цитата:
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder |
||
![]() |
![]() |
![]() |
#53 |
Пользователь
Регистрация: 20.01.2014
Сообщений: 37
|
![]()
Так ребята. завтра пойду проводить опыты. Возьму осциллограф. Написал на VisualC++ консольное приложение - попробую его погонять. Может и в правду дотнет тормознутый? По поводу задержки управляющего сигнала - так я его выставлял от 1 мс - до 50 - экспериментировал - результат тот же. Да и вообще я пробую хотя бы переключить DTR с одного состояния на другое без всяких задержек. Думаю - что скорее всего запаздываю с выставлением сигнала. А вот почему - может из-за дотнета, может и из-за того, что из отладчика студии запускаю,а может и то и другое. В общем завтра пойду эксперименты ставить, а сегодня уже не успеваю. Спасибо вам что не бросаете в беде:D Отпишусь завтра к вечеру что да как...
|
![]() |
![]() |
![]() |
#54 | |
Старожил
Регистрация: 29.09.2009
Сообщений: 9,713
|
![]() Цитата:
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation |
|
![]() |
![]() |
![]() |
#55 |
Пользователь
Регистрация: 20.01.2014
Сообщений: 37
|
![]()
Вы не совсем поняли(или просто выразились не так). Проходная не реагирует на второй сигнал - я при приходе первого пакета его выставляю жёстко в другое состояние(0-разрешаю,а было 1 - запрещено) и в дальнейшем моя программа его не меняет. Т.е. в дальнейшей работе он у меня так и стоит в 0(всегда пропускает). И действительно пропускает всегда. Но только не в тот раз, когда человек в первый раз всунул пропуск и я в обработчике прихода данных в порт после считывания данных установил эту линию в 0(DTR=0 - разрешение прохода). Т.е. в первый раз не пропускает - а потом ходи сколько хочешь. Если же я выставляю в 0(разрешаю проход) - делаю задержку(пробовал от 1 до 50 мс), а потом опять в 1(запрещаю проход), то вообще не пускает никогда-сколько я попыток не пробовал (по умолчанию запрет стоит(DTR=1)). Словно я не меняю никаких сигналов.
|
![]() |
![]() |
![]() |
#56 | |
Пользователь
Регистрация: 20.01.2014
Сообщений: 37
|
![]() Цитата:
|
|
![]() |
![]() |
![]() |
#57 | |
Пользователь
Регистрация: 20.01.2014
Сообщений: 37
|
![]() Цитата:
![]() |
|
![]() |
![]() |
![]() |
#58 |
Старожил
Регистрация: 31.05.2010
Сообщений: 13,543
|
![]()
Тоесть, проблема со стороны разъёма XS1? Тогда вопрос к программе контроллера.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder |
![]() |
![]() |
![]() |
#59 | |
Пользователь
Регистрация: 20.01.2014
Сообщений: 37
|
![]() Цитата:
В общем всем спасибо за помощь. . Вот кусочек кода на asm-е( я так понимаю обработчик прерывания прихода данных в порт-DOS файл с расширением com). Тут ComPort.ModemControlReg-это адрес регистра MCR, ComPort.ModemValDenied=0x08h ComPort.ModemValGranted- 0x0bh. Вопрос-правильно ли я понимаю логику управления контроллером? ; COM Interrupt New0CInt PROC ; Save all processor registers @PushAll ; Set DS and ES register to CS register @SetDSEStoCS ; Send Access Denied signal to InOut device @OutPort ComPort.ModemControlReg, ComPort.ModemValDenied ; Get COM port Line Status _GetPortStatus: @InPort ComPort.LineStatusReg MOV AH, AL MOV CL, ComPort.LineStatusSHR SHR AH, CL AND AH, 7 JZ _ReadCOMport ; Read received data from COM port (if any) @InPort ComPort.DataBufferReg JMP _Int0CIret _ReadCOMPort: ; Read received data from COM port (if any) @InPort ComPort.DataBufferReg TEST BYTE PTR CS:ComPort.PortStatus, sfDisabled JZ _NextChar JMP _InitInOut _NextChar: ; Revert bits MOV DX, MASK InSide NOT AL @MovSource MOV CL, '+' CMP AL, 10 JB _GetChar JZ _InOut MOV DX, 0 MOV CL, '-' CMP AL, 12 JZ _InOut JMP _Int0CIret _InOut: MOV ES:ComPort.Source+SourceLen, CL MOV BYTE PTR CS:CharCnt, 0 MOV ComRec.ComNum, 0 MOV ComRec.ComNum+2, 0 MOV ComRec.ComTime, DX JMP _Int0CIret _GetChar: MOV CL, AL ADD CL, '0' MOV ES:ComPort.Source+SourceLen, CL INC BYTE PTR CS:CharCnt XOR AH, AH @LongMul ComRec.ComNum _PrintChar: CMP BYTE PTR CS:CharCnt, 2 JNZ _GetPropuskNum MOV AX, ComRec.ComNum SHL AL, 1 SHL AL, 1 SHL AL, 1 SHL AL, 1 XCHG AH, AL XOR AL, AL OR ComRec.ComTime, AX MOV ComRec.ComNum, 0 MOV ComRec.ComNum+2, 0 _GetPropuskNum: CMP BYTE PTR CS:CharCnt, 6+2 JZ _LoadPropuskNum JMP _Int0CIret _LoadPropuskNum: MOV AX, ComRec.ComNum MOV DX, ComRec.ComNum+2 CMP AX, 0 JZ _AccessGrantedButNoSave CMP DX, 0 JZ _NormalPropusk CALL TestIsInTestList JC _AccessDenied JMP _AccessGrantedButNoSave _NormalPropusk: CALL GetTimeToAX OR ComRec.ComTime, AX CALL TestIsAccessGranted JC _AccessDenied CALL SaveBufRecord JC _AccessDenied _AccessGrantedButNoSave: @MovSource MOV ES:ComPort.Source+SourceLen, BYTE PTR 0 @OutPort ComPort.ModemControlReg, ComPort.ModemValGranted @SoundAccessGranted _InitInOut: MOV BYTE PTR CS:CharCnt, 0 JMP _Int0CIret _AccessDenied: @MovSource MOV ES:ComPort.Source+SourceLen, BYTE PTR 0 @OutPort ComPort.ModemControlReg, ComPort.ModemValDenied _Int0CIret: @OutPort 20h, 20h @PopAll IRET New0CInt ENDP Последний раз редактировалось TELEPUZ; 31.01.2014 в 14:55. |
|
![]() |
![]() |
![]() |
Опции темы | Поиск в этой теме |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Программирование 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 |