[ОТВЕТИТЬ]
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
08.11.2017 04:37
votming
 
Цитата:
grannie COM3 на 10-м прерывании - однозначно на внешней (по отношению к чипсету материнки) плате. Под ДОСом работает как захочет, обычно - никак. Нужно обязательно грузить в autoexec/config всё, что к нему грузить требуется. И не факт, что после этого всё заработает как ожидается - те же паскалевские библиотеки запросто могут не уметь работать с нестандартными (не 3 и не 4) прерываниями портов. Слышал о положительном опыте использования старых фидошных fossil-драйверов в данном применении, можно попробовать повозиться с x00/BNU
Спасибо, уже более понятно что с этим "фруктом" делать. Только что именно нужно прописать в autoexec/config? Или это уже индивидуально?
08.11.2017 07:21
OlegON
 
От того, что за карточка зависит... Если назовешь свою кассу, шансы, что у кого-то она есть, увеличатся, однако, шансов на то, что кто-то под DOS с ней, крайне мало.
08.11.2017 07:56
deadraritet
 
судя по картинке это кассовый терминал Beetle M2 Plus.

текст файла autoexec.bat у нас следующий, используется утилита сименса ite887x, которая позволяет работать с портами СОМ3 и СОМ4 (она есть в хранилище):

@echo off
SET DOS16M=:8M
SET RTM=EXTMAX 8192 REALLEAVE 8192
PATH=C:\DOS;C:\;C:\vc;C:\CRUKM\dll;C:\pctcp

CD \pctcp
call net.bat

rem Џ®¤Є«о祭ЁҐ com Ї®ав®ў ¤«п M2Plus.
rem …б«Ё ­ M2Plus ­ Ў«®ЄҐ ЇЁв ­Ёп …‘’њ вг¬Ў«Ґа в® ­Ґ § Ўлў Ґ¬ ЇаЇЁб в ў cash.ini Ї а ¬Ґва ITE887xController = 19
rem …б«Ё ­ M2Plus ­ Ў«®ЄҐ ЇЁв ­Ёп Ќ…’ вг¬Ў«Ґа в® ­Ґ § Ўлў Ґ¬ ЇаЇЁб в ў cash.ini Ї а ¬Ґва Ќ… ЏђЋЏ€‘›‚Ђ…Њ
cd \UTILS\SIEMENS\M2PLUS
ite887x.exe
rem pause

cd \utils
rem call keyrus.com

rem Џ®¤Є«о祭ЁҐ бҐаўҐа г¤ «Ґ­­®Ј® ¤®бвгЇ ¤® DOS Є ббл
rem c:
rem cd \Utils\Thiny
rem call tinyh_f.exe 12345 12345

cd \bti
btrieve.exe

rem Љ бб®ўл© ¬®¤г«м
cd \crukm
cashmove.exe
call cass.bat

CLS
c:\vc\vc

rem бҐвм Ї®¤Є«оз Ґвбп ў config.sys
09.11.2017 11:57
votming
 
Да, у меня Beetle M2 Plus.
Разъемы COM3 и СОМ4 находятся на той же плате, но видимо работают на другом чипсете. В autoexe всё стоит так же, но, зараза, работать по хорошему всё равно отказывается.
09.11.2017 12:11
votming
 
Обнаружили забавную вещь. Биос нам пишет, что прерывания на 3ем и 4ом порте у нас 10, пишет что у них нормальные адреса, а драйвер при пошаговой загрузке пишет следующее:


Да ещё и адреса пишет FF00(0x65280)
Сложно. Драйвер косячный? Не подскажите куда копать?
09.11.2017 12:12
votming
 
Простите за кривое фото
09.11.2017 12:16
grannie
 
У меня впечатление, что тут что-то хардварное приключилось нехорошее...
Опции темы


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

 

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