[ОТВЕТИТЬ]
Опции темы
07.11.2017 08:28
 
Здравствуйте. Есть ридер для считывания карт. Есть код на turbo pascal 7.0 под ms-dos'ом. На СОМ1 всё работает идеально, когда в коде меняю ком порт на СОМ3 ничего вообще не происходит, будто к ком3 ничего вообще не подключено. Я в досе мало чего понимаю, но на работе попросили разобраться и повешать таки ридер на СОМ3. В биосе такую инфу нашел:
Serial Port1: 3F8(IRQ4)
Serial Port2: 2F8(IRQ3)
Serial Port3: 3E8(IRQ10)
Serial Port4: 2E8(IRQ10)

Видимо в прерываниях или ещё в чем-то проблема. На СОМ2 так же всё работает идеально. В чём может быть проблема и куда копать, не подскажите?

Кусочек кода подключения к порту:

OpenCom(3, B_19200, Bits_8+Stops_1+Parity_No, 2048);
WriteCom(ComNo, chars); {тут посылаются символы в порт}
While ReceivedFromCom(3)>0 do ReadCom(3, Chr): {Читаем ответ}
07.11.2017 08:53
 
А COM3, случайно, не на внешней карте? Для нее дрова есть? И при чем тут Кристалл УКМ?
Код можно выложить целиком.
07.11.2017 09:52
 
Цитата:
OlegON А COM3, случайно, не на внешней карте? Для нее дрова есть? И при чем тут Кристалл УКМ?
Код можно выложить целиком.
Извините, создал не в том разделе вопрос. Увидел просто похожу тему почти 1 в 1 здесь(https://olegon.ru/showthread.php?t=9451) и решил тоже тут спросить.

СОМ3, насколько я могу судить, находится не на внешней карте(см. изображение):
Дрова — не знаю. Мне дали этот тестовый компьютер и сказали на нём поэкспериментировать, заставить ридер работать на 3ем порту. На первых двух у нас фискальник и сбербанк. Код очень большой и очень много лишнего. Могу скинуть функцию, в которой идет общение между ПК и ридером:

BEGIN
clrscr;
ComNo:=3;
OpenCom(ComNo, B_19200, Bits_8+Stops_1+Parity_No, 2048);

Write(ComNo, chars); {chars - набор символов, при котором ридер отправить в ответ номер карты}

While ReceivedFromCom(ComNo)>0 do begin
ReadCom(ComNo,Chr); info:=info+Chr;
end;
END.
07.11.2017 09:53
 
Цитата:
votming СОМ3, насколько я могу судить, находится не на внешней карте(см. изображение):
Изображение у меня не грузится почему-то.
07.11.2017 10:24
 
07.11.2017 10:26
 
по картинке не понятно: это встроенные порты или через плату расширения ...

Просто, если это плата расширения, то под досом надо сначала дрова запускать именно от этой платы ...иначе дос их просто не увидит
07.11.2017 10:27
 
ну и
Цитата:
Serial Port3: 3E8(IRQ10)
Serial Port4: 2E8(IRQ10)
у 3 и 4 портов прерывания одинаковые ...
что явно не гуд ...
переназначьте , чтоб разные были
"Спасибо" Stels от:
07.11.2017 10:39
 
Цитата:
Stels
у 3 и 4 портов прерывания одинаковые ...
что явно не гуд ...
переназначьте , чтоб разные были
А как прерывания изменить? В биосе не смог. IRQ изменяется только при переустановке мс-доса?
07.11.2017 11:14
 
Прерывания указываются в биосе. Можно попробовать обновить биос.
07.11.2017 13:11
 
COM3 на 10-м прерывании - однозначно на внешней (по отношению к чипсету материнки) плате. Под ДОСом работает как захочет, обычно - никак. Нужно обязательно грузить в autoexec/config всё, что к нему грузить требуется. И не факт, что после этого всё заработает как ожидается - те же паскалевские библиотеки запросто могут не уметь работать с нестандартными (не 3 и не 4) прерываниями портов. Слышал о положительном опыте использования старых фидошных fossil-драйверов в данном применении, можно попробовать повозиться с x00/BNU


Опции темы



Часовой пояс GMT +3, время: 20:48.

Все в прочитанное - Донат - RSS - - Карта - Вверх

Форум сделан на основе vBulletin®
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd. Перевод: zCarot и OlegON
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.