У меня есть приложение ac # mono для монтирования в Linux / raspbian (raspberry pi 3, модель b +), которое обращается к последовательному порту для связи со специальным устройством (устройством считывания карт wiegand) для получения информации о состоянии чтения и получить информацию на карточке. Все последовательные коммуникации идут нормально, кроме:
Это приложение также должно выступать в качестве СЕРВЕРА, чтобы другие компьютеры могли запрашивать информацию о последовательном устройстве. Моя проблема в том, что, когда приложение обслуживает запрос сокета, его блок буфера последовательного ввода (хотя я могу записать в последовательный порт), я не могу прочитать буфер ввода, потому что он всегда сообщает 0 байтов (во время работы сокета жива), когда операции с сокетом завершаются, последовательный ввод (ответ от интерфейса weigand) снова ставится в очередь во входной буфер, что слишком поздно, потому что операция с сокетом завершилась, и мне нужно вернуть последовательные данные в результате сокета.
Если я сделал запрос на сокет с того же компьютера, который работает как сервер (сервер и клиент на одном Raspberry Pi), все это работает нормально, и я могу прочитать последовательный порт во время операции с сокетом, проблема в том, что запрос сокета поступает с другого компьютера в сети.
Я не знаю причину этого поведения, потому что я могу записать в последовательный порт, пока запрос сокета является сервером, но я не могу прочитать последовательный порт (потому что он сообщает 0 байтов), пока сокет операция выполняется .. последовательная информация отправляется во входной буфер до завершения операций сокета.
Можете ли вы дать какие-либо огни, чтобы исправить эту проблему? Может быть, мне нужно что-то настроить в системе Linux, или это может быть ошибка в моно ??
Можете ли вы дать совет или внести предложения, чтобы улучшить процесс, мне нужно вернуть в операции сокета результаты чтения последовательного порта.
Спасибо