Выделенные соединения / текстовые выходы для связи с последовательными устройствами - PullRequest
0 голосов
/ 21 февраля 2019

Я разработчик программного обеспечения, в настоящее время входящий в мир программирования для физических устройств через последовательный интерфейс, и некоторые аспекты мне незнакомы или неизвестны.

Одним из таких аспектов является выяснение поведения соединений с последовательным устройством.во время одновременного чтения и записи.

Позвольте мне объяснить: например, у меня есть последовательное устройство, установленное на /dev/ttyACM0, и я должен разработать подпрограмму, которая реагирует на выходные данные этого устройства, запускаемые различными внешними устройствами.источники.Это означает, что у меня есть программа, которая открывает соединение, которое постоянно и асинхронно читает выходные данные.

Пример на golang:

func main() {
    go listenForUpdates() //create an asynchronous routine
    //something else that keeps the program running
}

func listenForUpdates() {
    for {
        //blocks until device sends some output
        responseAsBytes, err := serialController.Readline("/dev/ttyACM0") 
        if err != nil {
            panic(err)
        }
        response := string(responseAsBytes)
        //do something with response
    }
}

Кроме того, у меня есть другие подпрограммы, которые открывают новое соединение сзапишите на устройство и также ожидайте некоторый вывод, специфичный для того, что было написано.

func execute() {
    err := serialController.Write("/dev/ttyACM0", "MY_COMMAND")
    if err != nil {
        panic(err)
    }
    //expects a certain output to be sent
    responseAsBytes, err := serialController.Readline("/dev/ttyACM0")
    if err != nil {
        panic(err)
    }
    response := string(responseAsBytes)
    //do something with response
}

Поэтому мой вопрос : какая операция Readline читает вывод, инициированный операцией Write?Это одна из асинхронных подпрограмм (даже если это отдельное соединение) или она вызывается непосредственно после операции записи?

Представьте, что устройство получает большой трафик, и мне нужна гарантия, чтовывод, который я читаю после операции записи, не связан с самой операцией или с тем, что я выполняю много операций записи, и выходные данные не перепутаны.

Любой уточняющий ответ или документация, помогающая мне понять этос благодарностью.

(я писал здесь, так как это больше связано с последовательными устройствами, чем с программированием)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...