Форум OlegON > Программы и оборудование для автоматизации торговли > Оборудование > Онлайн-кассы > Другие кассовые аппараты

Перевести программу с COM1 на COM3 - Turbo Pascal : Другие кассовые аппараты

29.03.2024 15:00


07.11.2017 08:28
votming
 
Здравствуйте. Есть ридер для считывания карт. Есть код на 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
OlegON
 
А COM3, случайно, не на внешней карте? Для нее дрова есть? И при чем тут Кристалл УКМ?
Код можно выложить целиком.
07.11.2017 09:52
votming
 
Цитата:
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
 
Цитата:
votming СОМ3, насколько я могу судить, находится не на внешней карте(см. изображение):
Изображение у меня не грузится почему-то.
07.11.2017 10:26
Stels
 
по картинке не понятно: это встроенные порты или через плату расширения ...

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

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