Возможно ли отправить данные с двух RS-232 портов в один?
Есть два компьютера на windows, отправляющий данные в COM порт, назовём их A, B. Есть устройство, получающее данные по RS-232 и обрабатывающее их, назовём его C. Возможно ли согласованно, без конфликтов отправлять данные на устройство C? Если возможно, то в какую сторону смотреть? Сам искал, но ничего не нашел, кроме хабов за 15к+. Важная деталь здесь, чтобы не возникало конфликтов, т.е. во время отправки данных из компьютера А в устройство С, компьютер В не отправлял данные, а сохранял их в какой-то буфер для отправки, когда линия освободится. Также необходимо, чтобы всё это работало стабильно, т.к. устройство С это ККМ.
Документацию к ККМ и руководство по её протоколу обмена почитать не?
Подобная буферизация может быть реализована только на уровне протокола, если без дополнительных железок, о которых вы уже упомянули.
Константин Антонов, Документацию не смотрел, т.к. быстро не нашел. Звонил в организацию, которая разработала ККМ. Они говорят, что у них нет решения этой проблемы и как решить нештатным способом не знают. Спасибо за ответ
Вставала похожая проблема.
Пришлось делать самописное решение.
Основная проблема - общение двустороннее и могут быть выставлены тайминги ожидания отправки/приёма результата, поэтому по-простому не получится.
Сделал собственный драйвер ком-порта, ставился на каждый пк, с которого нужен был доступ к устройству. Основная задача драйвера - общение с сервером и зависнуть при попытке открытия ком порта, пока на хосте (отдельный пк, к которому физически подключено устройство) ком-порт не закроют (т.е. обмен с устройством будет полностью завершён) и передавать туда-сюда запросы. Гемор знатный вышел.
Возможно, для этого компьютеры А и В должны следить за сигналами готовности (RTS, DTR) и выбирать подходящее время для начала передачи. В протоколе tcp есть такая штука — "collision resolve" в общем понимании последовательной передачи — там чипы выбирают случайное время для попыток передачи.
А какая физическая схема подключения будет в этом случае? Не могу разобраться. Просто каждая линия каждого устройства соединяются и всё? Т.е. TX компьютеров соединяются с RX устройства C в одной точке, RX компьютеров соединяются с TX устройства C в одной точке и остальные линии по аналогии? Может есть стандарт, в котором описываются принципы физического подключения в таком случае?
ekopiy, просто не получится. на одном выходе TX будет -12в, на другом +12в. и сгорят они мгновенно.
схемку объединения сигналов придется намудрить меньше десятка транзисторов (ткну пальцем в небо).
главное чтобы данные "не сталкивались".
ekopiy,
Ещё раз: вам необходимо прочитать документацию к ККМ, а уже потом делать какие-то выводы и пытаться городить какие-то решения, не предусмотренные производителем. Если вы смогли связаться с производителем - попросите их выслать документацию. Вряд ли они откажут.
ekopiy, наверное, да. ибо есть некоторое кол-во неизвестностей в протоколах обмена данными, чтобы связать их напрямую. RS-232 под такое изначально не продумывался.
хаб (хотя если следовать сетевой логике это уже должен быть свитч :) ) их должен решать.
варинат2: глубоко изучить ковыряемую систему.
Сергей Сергей, элементарно собирается на десяти транзисторах или одной 4 канальной max232 с одним резистором и пятью кондерами.
расширенный 232 ?? что это такое.
зачем изоляция линии ??
проц с тремя уартами (пусть и программными) и кешем данных внутри, плюс логика кто-кому чего отправил.
pfg21, ну схемотехнический спор я не удержу. но, мне думалось про три чипа мах232 со своей обвязкой каждый и заворачиванием управляющих линий в соответствии логике переключения источников.
"расширенный" в смысле участия трёх клиентов вместо двух по стандарту. изоляция — отсекать источник от линий передачи вообще.
под "расширенным" я так понял ты говоришь что множество протоколов пром.устройств (тотже MODBUS) поддерживают адресацию, ибо наличие 232 подразумевает что этот прибор чрез преобразователь можно подключить к гирлянде на 485.
pfg21, ну в данном случае адресация устройств мне показалась излишней, ведь для кассы, которая явно будет ведомым устройством, безразлично, какой из компьютеров будет печатать. Я, очевидно, неправильно выразился с "расширенным", я предполагаю описание верхнего протокола над 232, который физическими средствами 232 — фиксацией логического уровня на какой-нибудь линии — будет управляться с переключением источников.