У меня много серийных кассовых ящиков. Проблема, с которой я постоянно сталкиваюсь, - это достаточно сильно открыть защелку, чтобы открыть ящик. Я полагаю, что есть конденсатор, который должен быть заряжен, и если конденсатор недостаточно заряжен, то при срабатывании защелки он не открывается. (Слышен слабый звук щелчка, но ящик не открывается.)
Из опыта (не прямого измерения) я могу сказать, что последовательные порты основной платы должны иметь более высокое напряжение, чем периферийные (PCI) последовательные порты. По этой причине я всегда ставлю кассовые аппараты на последовательный порт основной платы, а принтеры - на периферийные. Тогда проблема почти полностью устранена, и вы не сможете открыть ящик, если попытаетесь дважды за слишком короткое время.
При использовании периферийного последовательного порта я обычно могу открыть ящик, только если я позволю конденсатору заряжаться в течение примерно 20-30 секунд; и затем порт должен быть открыт в той программе, которая его использует. Если программа открывает порт, отправляет сигнал, а затем закрывает порт, ящик никогда не откроется. (Так что напряжение есть только при открытом порту, я думаю.) Это означает, что одним из вариантов является изменение программы, чтобы порт оставался открытым все время, а затем, надеюсь, у него будет достаточно времени между использованиями для полной зарядки.
Сейчас я сталкиваюсь с ситуацией, когда у меня есть компьютер с только периферийными последовательными портами, и реализация отправки сигнала кассового аппарата остается за мной. Сейчас у меня есть два варианта: держать порт открытым 100% времени или использовать другой компьютер и / или материнскую плату.
Вместо этого было бы неплохо, если бы был способ исправить проблему с картами PCI. Есть ли способ увеличить напряжение на картах последовательного порта PCI? Или, может быть, поддержание соединения через последовательный порт открытым в течение всего срока действия программы не обязательно является проблемой? (Мне кажется, что это плохая практика и что-то, чего можно избежать, если это возможно.) Может быть, есть какой-то другой вариант, о котором я не думал?